這題,可以用並查集來解決。需要用到兩個陣列來判斷從i到j以及j到i的是否屬於同乙個並查集。
下面的是ac的**:
#include #include using namespace std;
int par[2][10005];
int n, m;
int finds(int x, int i)
void join(int x, int y) //並查集合並
if(y != n) }
int main()
int flag = 0;
for(int k = 1; k <= n; k++) //並查集合並之後,都是屬於第n個,所以判斷是否等於n
}if(flag)
cout << "no" << endl;
else
cout << "yes" << endl;
} return 0;
}
tarjan演算法 杭電迷宮城堡。
思路 這題運用到tarjan演算法 剛看這個演算法一臉蒙b,然後通過閱讀別人的部落格算是掌握的差不多了。這個演算法中用到兩個陣列第乙個dfn,low,第乙個陣列是用來記錄深搜的順序的,第二個陣列是用來儲存i節點能夠追溯到他這個強連通分量最先深搜到的那個節點。具體的看演算法有關鍵注釋。我這裡簡單說下這...
HDU 1269 迷宮城堡
強連通分量,這題幾乎沒有除錯就ac了。第一次寫tarjan,真順利,其實可以再優化的,只要求出兩個以上的強連通分量就可以直接輸出no了,而不用再繼續算下去 include include include include include include include includeusing nam...
HDU 1269 迷宮城堡
為了訓練小希的方向感,gardon建立了一座大城堡,裡面有n個房間 n 10000 和m條通道 m 100000 每個通道都是單向的,就是說若稱某通道連通了a房間和b房間,只說明可以通過這個通道由a房間到達b房間,但並不說明通過它可以由b房間到達a房間。gardon需要請你寫個程式確認一下是否任意兩...