題目是判斷給定的圖是否存在環與孤立的點。使用並查集即可判斷,如果存在環路,則必有一條邊使得當這條邊的兩端的頂點的根節點屬於同乙個集合,因而在合併操作的時候判斷這條邊的兩個節點的根節點是否屬於同乙個集合。孤立的點,則會出現,合併的最後仍至少有兩個點的根節點為自身。poj的1308和此題類似
**如下:
#include #include #include using namespace std;
const int maxn = 100005 ;
int parent[maxn] ;//記錄每個節點的父節點
bool flag ;//標記是否存在環路
bool vis[maxn] ;//標記那些節點存在
//初始化,對並查集的第乙個操作
void init()
}//查詢節點x的根節點
int find_x(int x)
//合併操作
void join(int x , int y)
else
return ;
}//查詢是否有孤立點的存在
bool count(int x)
if(sum > 1)
}return 1 ;
}int main()
else
if(flag && count(w))
else
}} return 0;
}
hdoj 1272 小希的迷宮
題目 關鍵點 1.特別小心輸入的格式,這個比較糾結。2.題目的最關鍵點 1 所有點的根節點都相同 即下面的count 1 2 輸入路徑不存在回來,這裡用flag來標記回來 即構成迴路,flag 1 3.注意find3 int x 這裡用路徑壓縮的話,速度會快很多 用空間來換時間 ac include...
HDU 1272 小希的迷宮
description 上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果有乙個通道連通了房間a和b,那麼既可以通過它從房間a走到房間b,也可以通過它從房間b走到房間a...
Hdu 1272 小希的迷宮
並查集 1.輸入的時候進行合併。當前讀入的兩個點如果屬於乙個集合,肯定輸出no。2.判斷一下是否有孤立點。3.當輸入0 0時,輸出yes。ac include include include include include using namespace std const int room 100...