HDU 3605 Escape 最大流,狀壓

2021-06-21 22:48:18 字數 1035 閱讀 4653

最大流,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個星球,那麼對星...