HDU 3605 Escape (最大流 縮點)

2021-09-25 08:08:35 字數 903 閱讀 2852

題意:給你n個人,m個星球,每個人對這m個星球的都有一定的適應能力,每個星球都有一定的容納量,問能否讓所有的人在星球上生存。

剛開始做的時候一直tle 不知道為什麼,改著改著發現建圖的時候,添了很多邊,這樣跑最大流非常慢,看了網上的思路才知道要縮點,因為星球最多才有10個,所以把每個星球適合住的人數存一下,當做源點與星球的邊的流量,星球的最大容納量當做星球與匯點的邊的流量。

跑一遍dinic,最大流大於等於n即yes

否則no

#include #include #include #include #include #include using namespace std;

const int inf = 0x3f3f3f3f;

const int max = (1ll << 31) - 1;

struct edge edges[1100];

int cur[2001], head[2000], edge_num = -1;

int n, m, s, t;

void addedge2(int from, int to, int dis)

void addedge(int from, int to, int dis)

int d[2001],e[100],p[100];

int dfs(int u, int flow)

}if (!_flow) d[u] = -1;

return _flow;

}bool bfs()}}

return (d[t] != -1);

}void dinic()

printf("%s\n", max_flow>=n?"yes":"no");

}int main()

return 0;

}

HDU 3605 Escape 最大流,狀壓

最大流,n比較大,但是m只有10,所以對應的人的狀態最多有2 m種,因此可以對人進行歸類,那樣n的資料量就只有1024了,求最大流 g 交會超時 要用c include include include include include define maxn 1100 define maxe 2100...

最大流 縮點 HDU 3605 Escape

有n個人,m個星球。每個人都對不同的星球有自己的喜好,每個星球都有自己的容量。問能否讓所有的人都呆在自己喜歡的星球裡。1 n 100000 m 1 m 10 以為是套模板的題,一直tle,mle。看了大佬的 才明白這題需要縮點。因為最多有10個星球,所以最多有 include include inc...

HDU 3605 Escape 狀態壓縮最大流

題目鏈結 題意n個人 範圍10w m個星球 範圍10 每個人有對星球的不同喜好,每個星球有自己的容量,問能否讓所有人都在滿意的星球上?思路一眼就是最大流 二分匹配我沒學。樸素做法s向人連邊權1,人向感興趣星球連邊權1,星球向t連邊權為容量,跑dinic,一遍tle,蕪湖 最多只有10個星球,那麼對星...