LibreOJ 6004 圓桌聚餐 最大流

2022-05-05 20:48:06 字數 1247 閱讀 6925

題解:天啊,這道最大流真是水的一批……只需要每張桌子向每個單位建一條容量為1的邊,源點向桌子建邊,容量為桌子能坐的人數;單位向匯點建邊,容量為單位人數即可,然後根據單位與桌子的連邊值是否為一來了解每個單位配對的桌子即可

**如下:

#include#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

int head[100010],next[100010],w[100010],v[100010],deep[100010],cur[100010

];int

n,m,s,t,cnt;

intinit()

void add(int

from,int to,int

cost)

void add_edge(int

from,int to,int

cost)

int bfs(int s,int

t) }

}if(!deep[t])

return1;

}int dfs(int u,int t,int

dist)

for(int &i=cur[u];i!=-1;i=next[i])}}

return0;

}int dinic(int s,int

t)

while(int di=dfs(s,t,inf))

}return

res;

}int

main()

for(int i=1;i<=n;i++)

}int ans=dinic(s,t);

if(ans==sum)

else

for(int i=head[t];i!=-1;i=next[i])}}

for(int i=1;i<=n;i++)

printf("\n

");}

}

LOJ 6004 圓桌聚餐

link 其實網路流就是再考你如何去建邊。先見 s t 為源點與匯點,然後將 s 連向每乙個單位,流量為每個單位的人數,然後將每乙個單位連向每乙個餐桌,流量為 1 最後在將每乙個餐桌與 t 相連,流量為每個餐桌容量,然後跑一邊 dinic 最大流就行,只需要優化一點點,每次 dfs 增廣多條增廣路就...

1214 圓桌會議

problem description hdu acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一...

1491 圓桌座位(DFS)

n 個人圍坐一圈,有 m 對朋友關係。第 i 對朋友關係是指,編號是 ai的人和編號是 bi 的人是朋友。現在要給他們安排座位,要求所有相鄰的人不能是朋友。問共有多少種方案?如果兩個方案只有旋轉角度不同,則我們將其視為一種方案。輸入格式 第一行包含兩個整數 n,m。接下來 m 行,每行包含一對 ai...