題目大意:
思路:建圖:
1.學生編號為
1' role="presentation" style="position: relative">11到
m' role="presentation" style="position: relative">m
m,床編號為m+
1' role="presentation" style="position: relative">m+1
m+1到
2m' role="presentation" style="position: relative">2m2
m。2.將在校學生(無論是否回家)與自己的床相連,邊權為1。
3.將在校學生(無論是否回家)的床與結束點
t' role="presentation" style="position: relative">t
t相連,邊權為1。
4.將不回家的學生和來看望的外校同學與起始點
s' role="presentation" style="position: relative">s
s相連,邊權為1。
5.將讀入的兩兩認識的人相連,邊權為1。
舉個栗子(樣例):
第一步:
第二步:
第三步:
第四步:
第五步:
然後就建好圖啦!
然後就可以找增廣路再ac啦!2333
**:
#include
#include
#include
using
namespace
std;
const
int inf=999999999;
int k,m,n,x,b[201],c[201][201],f[201][201],t,s,d,sum,tot;
struct n
p[201];
int dfs(int x) //找增廣路
return0;}
void addflow()
i=t;
while (i!=s) //減去最小邊權
sum+=d;
return;
}int main()
}b[s]=0;
for (int i=1;i<=m;i++)
}for (int i=1;i<=m;i++)
for (int j=1;j<=m;j++)
} while (dfs(s)==1) //找增廣路
if (sum>=tot) puts("^_^");
else
puts("t_t");
}return
0;}
匈牙利 洛谷 P2055 假期的宿舍
學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複雜,有的人...
洛谷 2055 假期的宿舍
好久不更新啦2333本著更新也沒人看的原則我來更新一下 題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b...
洛谷 P2055 ZJOI2009 假期的宿舍
學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複雜,有的人...