将星期拆点,符合条件的连边,最后统计汇点流量是否满就行了,注意结点编号。
#include #include #include #include #include #include #include #include #include #include #define eps 1e-12 #define INF 0x7fffffff #define maxn 1000 using namespace std; int n,m; int en; int st,ed; //源点和汇点 int dis[maxn] ;//dis[i],表示 到 原点 s 的 层数 int que[999999]; int can[55][11]; struct edge { int to,c,next; }; edge e[999999]; int head[maxn]; void add(int a,int b,int c) { e[en].to=b; e[en].c=c; e[en].next=head[a]; head[a]=en++; e[en].to=a; e[en].c=0; e[en].next=head[b]; head[b]=en++; } int bfs() { memset(dis,-1,sizeof(dis)); dis[st]=0; int front=0,rear=0; que[rear++]=st; while(front