匈牙利 洛谷 P2055 假期的宿舍

2022-07-24 05:51:13 字數 1528 閱讀 4058

學校放假了 · · · · · · 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複雜,有的人可能認識好多在校學生,在校學生之間也不一定都互相認識。我們已知一共有 n 個人,並且知道其中每個人是不是本校學生,也知道每個本校學生是否回家。問是否存在乙個方案使得所有不回家的本校學生和來看他們的其他人都有地方住。

輸入格式:

第一行乙個數 t 表示資料組數。接下來 t 組資料,每組資料第一行乙個數n 表示涉及到的總人數。接下來一行 n 個數,第 i 個數表示第 i 個人是否是在校學生 (0 表示不是,1 表示是)。再接下來一行 n 個數,第 i 個數表示第 i 個人是否回家 (0 表示不回家,1 表示回家,注意如果第 i 個人不是在校學生,那麼這個位置上的數是乙個隨機的數,你應該在讀入以後忽略它)。接下來 n 行每行 n 個數,第 i 行第 j 個數表示 i 和 j 是否認識 (1 表示認識,0 表示不認識,第 i 行 i 個的值為 0,但是顯然自己還是可以睡自己的床),認識的關係是相互的。

輸出格式:

對於每組資料,如果存在乙個方案則輸出 「^_^」(不含引號) 否則輸出「t_t」(不含引號)。(注意輸出的都是半形字元,即三個符號的 ascii 碼分別為94,84,95)

輸入樣例#1:

1

31 1 0

0 1 0

0 1 1

1 0 0

1 0 0

輸出樣例#1:

^_^

對於 30% 的資料滿足 1 ≤ n ≤ 12。

對於 100% 的資料滿足 1 ≤ n ≤ 50,1 ≤ t ≤ 20。

1 #include 2 #include 3 #include 4 #include 5

#define n 10010

6using

namespace

std;

7struct edge e[n];

8int

q,n,tot,cnt,ans,a[n],b[n],head[n],p[n],vis[n];

9void insert(int x,int y)

10int xyl(int

x)1117}

18return0;

19}20int

main()

2133

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

34for (int j=1;j<=n;j++)

3539

for (int i=1;i<=n;i++) if (a[i]&&!b[i]||!a[i]) memset(vis,0,sizeof(vis)),ans+=xyl(i);

40if (ans==tot) printf("

^_^\n

"); else printf("

t_t\n");

41}42 }

SSL ZYC 洛谷P2055 假期的宿舍

題目大意 思路 建圖 1.學生編號為 1 role presentation style position relative 11到 m role presentation style position relative m m,床編號為m 1 role presentation style pos...

洛谷 2055 假期的宿舍

好久不更新啦2333本著更新也沒人看的原則我來更新一下 題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b...

洛谷 P2055 ZJOI2009 假期的宿舍

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