題意:給乙個圖,如果圖里有環或者是森林就輸出"no"
注意空圖算"yes"
並查集判環:合併集合時,如果出現自己並自己的情況,就說明出現了環
1272:
#include using namespace std;
const int maxn=1e6+10;
int parent[maxn],ranc[maxn];
int serc(int pos)
return pos;
}void init()
}void merg(int x,int y)
int sum=0;
if(!flag)
for(int i=1;i<=maxn;i++)}}
if(flag)cout<<"no"<1325把樹搞成了有向邊
只需要在上面那題**裡面加乙個記錄每個點有沒有過雙親節點
//還有一點,輸入結束標誌是負數而不是-1 -1
#include using namespace std;
const int maxn=1e6+10;
int parent[maxn],ranc[maxn];
bool hasparent[maxn];
int serc(int pos)
return pos;
}void init()
}void merg(int x,int y)
hasparent[cur2]=true;
s[cur1]=true;
s[cur2]=true;
if(serc(cur1)==serc(cur2))flag=true;
merg(cur1,cur2);
if(cur1>maxn)maxn=cur1;
if(cur2>maxn)maxn=cur2;}}
int sum=0;
if(!flag)
for(int i=1;i<=maxn;i++)}}
if(flag)cout<<"case "<<++ppp<<" is not a tree."<
hdu 4514 並查集判環)
tencent昨天比賽的題目,昨天看的時候沒什麼思路,今天在網上搜了一下,說是可以用並查集做。果然,過了。看來還是做的題不夠多啊!思路 並查集判環,並把每次的邊權值都加到根結點的上去,最後求每個根結點權值的最大值就行了。orz 1 include2 include3 const int n 1000...
HDU 1272 並查集判環
上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果有乙個通道連通了房間a和b,那麼既可以通過它從房間a走到房間b,也可以通過它從房間b走到房間a,為了提高難度,小希希望...
並查集判環(裸
題目大意 有一些化合物,每個化合物都由兩種元素組成的 每個元素用乙個大寫字母表示 你是乙個裝箱的工人,從實驗員那裡按照順序依次把一些簡單化合物裝到車上。但這裡存在乙個安全隱患 如果車上存在k個簡單的化合物,正好包含k中元素,那麼它們將組成乙個易爆的混合物。為了安全起見,每當你拿到乙個化合物時,如果它...