並查集練習

2021-12-29 19:39:27 字數 856 閱讀 5451

集合的合併與維護和食物鏈那道題一樣。

不過多了個裁判。注意到n<=500,所以可以列舉裁判,然後判斷是否出現了矛盾。(忽略裁判)

如果有矛盾,則這個人不是裁判。

唯一有點難度的是輸出第幾行判斷出的裁判。

原先以為是最後出現裁判的那一行。

後來發現應當時列舉其他人時候首次出現矛盾的最大值。(仔細想想)

這樣這道題就解決了。

【**】

[cpp] 

#include  

#include  

#include  

#include  

#include  

using namespace std; 

const int n=505,m=2005; 

int fa[n],r[n],x[m],y[m],z[m]; 

int n,m,k,kk,ans; 

int find(int x)   

int main() 

ans=k=kk=0; 

for (j=0;j

for (i=1;i<=m;i++) 

else if ((r[x[i]]-r[y[i]]+3)%3!=z[i]) 

} if (ff) 

} if (ans==0) printf("impossible\n"); 

else if (ans>1) printf("can not determine\n"); 

else printf("player %d can be determined to be the judge after %d lines\n",k,kk); 

} } 作者:ascii991

並查集練習

題目描述 假如已知有n個人和m對好友關係 存於數字r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如 n 5 m 3 r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1 2 3屬於乙個朋友圈,4 5屬於另乙個朋...

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

並查集入門(普通並查集 帶刪除並查集 關係並查集)

什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...