題目傳送門
方法:這是一道赤裸裸的並查集題目,根據輸入先進行合併,合併後根據輸入開始查詢判斷即可。需要注意的是,為了簡化題目,實際操作過程中可以用編號來對應姓名,從而表示出不同的學生,並建立相應的聯絡。
實現**:
#include#includeusing
namespace
std;
//一看這個問題是組間分類和查詢問題,便可以聯想到並查集的方法去解決
//關鍵在於將字串用數字來代替處理,然後套上並查集的模板就能直接ac(還好測試資料不是過大,雙重迴圈盡然沒崩,lucky.jpg)
#define max_n 1000005
intn,m;
string s[20005]; //
儲存學生的名字
int rank[max_n]; //
樹的高度
intpar[max_n];
void
init()
}int find(int x)
else
return par[x]=find(par[x]); //
在查詢的過程中實際上直接將父節點連線到根節點上進行優化
}void unite(int x,int
y)else
}bool same(int x,int
y) int k=0
;int
main()
init();
for(int i=1;i<=m;i++)
if(s[j]==b)
if(flag1&&flag2)
}unite(t1,t2);
}int k=0
; cin>>k;
for(int i=1;i<=k;i++)
if(s[j]==b)
if(flag1&&flag2)
}if(same(t1,t2))
else cout<<"
no."
<}
return0;
}
P2256 一中校運會之百公尺跑
在一大堆秀恩愛的 之中,來不及秀恩愛的蘇大學神踏著堅定 的步伐走向了100公尺跑的起點。這時蘇大學神發現,百公尺賽跑的參賽同學實在是太多了,連體育老師也忙不過來。這時體育老師發現了身為體育委員的蘇大學神,便來找他幫忙。可是蘇大學神需要熱身,不然跑到一半就會抽 筋 於是他就找到了你。如果你幫助體育老師...
洛谷P2256 一中校運會之百公尺跑
在一大堆秀恩愛的 之中,來不及秀恩愛的蘇大學神踏著堅定 的步伐走向了100公尺跑的起點。這時蘇大學神發現,百公尺賽跑的參賽同學實在是太多了,連體育老師也忙不過來。這時體育老師發現了身為體育委員的蘇大學神,便來找他幫忙。可是蘇大學神需要熱身,不然跑到一半就會抽 筋 於是他就找到了你。如果你幫助體育老師...
LUOGU 2256一中校運會之百公尺跑
在一大堆秀恩愛的 之中,來不及秀恩愛的蘇大學神踏著堅定 的步伐走向了100公尺跑的起點。這時蘇大學神發現,百公尺賽跑的參賽同學實在是太多了,連體育老師也忙不過來。這時體育老師發現了身為體育委員的蘇大學神,便來找他幫忙。可是蘇大學神需要熱身,不然跑到一半就會抽 筋 於是他就找到了你。如果你幫助體育老師...