最大流,n比較大,但是m只有10,所以對應的人的狀態最多有2^m種,因此可以對人進行歸類,那樣n的資料量就只有1024了,求最大流
g++交會超時 ,要用c++
#include #include#include#include#include#define maxn 1100
#define maxe 21000
#define inf 0x7fffffff
using namespace std;
int num[maxn];
struct edgeedge[maxe];
int head[maxn],cnt,n,m,src,des;
int dep[maxn],gap[maxn];
void init()
void addedge(int cu,int cv,int cw)
}for(i=0;i!=top;++i)
res+=temp;
top=inser;
u=edge[stack[top]].from;
}for(i=cur[u];i!=-1;i=edge[i].next)
if(edge[i].cap!=0&&dep[u]==dep[edge[i].to]+1)
break;
if(i!=-1)else
}++gap[dep[u]=minn+1];
if(u!=src)
u=edge[stack[--top]].from;}}
return res;
}int main()
num[tmp]++;
}sum=n;
src=0;
n=1<=0;j--)}}
for(i=1;i<=m;i++)
n=des+1;
ans=sap();
if(ans==sum)
printf("yes\n");
else
printf("no\n");
}return 0;
}
最大流 縮點 HDU 3605 Escape
有n個人,m個星球。每個人都對不同的星球有自己的喜好,每個星球都有自己的容量。問能否讓所有的人都呆在自己喜歡的星球裡。1 n 100000 m 1 m 10 以為是套模板的題,一直tle,mle。看了大佬的 才明白這題需要縮點。因為最多有10個星球,所以最多有 include include inc...
HDU 3605 Escape (最大流 縮點)
題意 給你n個人,m個星球,每個人對這m個星球的都有一定的適應能力,每個星球都有一定的容納量,問能否讓所有的人在星球上生存。剛開始做的時候一直tle 不知道為什麼,改著改著發現建圖的時候,添了很多邊,這樣跑最大流非常慢,看了網上的思路才知道要縮點,因為星球最多才有10個,所以把每個星球適合住的人數存...
HDU 3605 Escape 狀態壓縮最大流
題目鏈結 題意n個人 範圍10w m個星球 範圍10 每個人有對星球的不同喜好,每個星球有自己的容量,問能否讓所有人都在滿意的星球上?思路一眼就是最大流 二分匹配我沒學。樸素做法s向人連邊權1,人向感興趣星球連邊權1,星球向t連邊權為容量,跑dinic,一遍tle,蕪湖 最多只有10個星球,那麼對星...