ZJOI2009 假期的宿舍 題解

2021-08-18 21:52:24 字數 915 閱讀 7702

題目大意:

算了太長了還是不講了吧,想看題的戳這裡

對於這道題,我們可以用網路流做(不懂網路流的戳這裡),1~n記錄需要床的人,與原點連一條邊,n+1~2*n記錄每個學生的床,與匯點連一條邊,然後跑一次最大流,原點擁有的流量為需要床的人的數量,假如全部流量都可以流到匯點,說明存在可行方案,思路就是這麼簡單,上**吧:

#include #include int n,m,t,len;

struct node;

node e[10010];

int first[110];

bool a[110],b[110];

int tou,wei;

void buildroad(int x,int y,int z)

int h[110],q[110],st,ed;

bool bfs()

}st++;

}if(h[wei]==0)return false;

else return true;

}int minn(int x,int y)

}if(tt==0)h[x]=0;

return tt;

}int main()

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

int m=n;//記錄需要床的人數

memset(first,0,sizeof(first));len=1;//記得初始化

tou=2*n+1,wei=tou+1;

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

int ans=0;

while(bfs())ans+=dfs(tou,m);//標準網路流

if(ans!=m)printf("t_t\n");

else printf("^_^\n");

}}

ZJOI2009 假期的宿舍

題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複...

ZJOI2009 假期的宿舍

這道題分析下就會發現是乙個二分圖匹配。將在校 包括來校訪友 和床單構成圖,判斷最大匹配數是否為總在校人數即可。這裡用的是 km 演算法。1 include 2 3using namespace std 45 define re register 6 define rep i,a,b for re i...

ZJOI2009 假期的宿舍

題目 洛谷p2055 bzoj1433 codevs2347。題目大意 有n個人,有些人是學生,有些人是來看學生的 不是學生 學生有床,而非學生沒有 廢話!有些學生回家,有些學生晚上住校,來看學生的人要住在學校裡。現在有一些認識的關係,規定每個要在學校睡覺的人只會睡在自己認識的人的床上,問能否使所有...