程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 1570: [JSOI2008]Blue Mary的旅行|網絡流

1570: [JSOI2008]Blue Mary的旅行|網絡流

編輯:關於C++

據說這題的思路挺正常,然而直接沒有向拆點的方面想QAQ 可能是做題太少見識太少的原因吧
然而每天只能走一班飛機所以顯然要拆點,把每個點拆成M個點,M是天數的上界,極限情況應該是n+T
因為要求的是最少的天數可以動態加邊一直跑網絡流,對於原圖中的邊(u,v)連一條從今天的u走到明天的v的邊,還要把前一天的點和後一天的點都連一遍邊,然後跑網絡流看當前流量是否≥T

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 300005
using namespace std;
int sc()
{
    int i=0; char c=getchar();
    while( c>'9' || c<'0' ) c=getchar();
    while( c>='0' && c<='9' )i=i*10+c-'0',c=getchar();
    return i;
}
int dis[N],q[N];
int x[N],y[N],z[N];
int head[N],nxt[N],lst[N],c[N];
int n,m,t,A,ans,S,T,tot=1;
void insert(int x,int y,int z)
{
    lst[++tot]=y;nxt[tot]=head[x];head[x]=tot;c[tot]=z;
    lst[++tot]=x;nxt[tot]=head[y];head[y]=tot;c[tot]=0;
}
bool BFS()
{
    for(int i=1;i<=T;i++)dis[i]=0;
    dis[q[1]=S]=1;
    for(int l=1,r=2;l=t)
        {
            printf("%d",i);
            return 0;
        }
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved