根據題意,容易看出,這道題就是要求判斷該圖是否強連通,即只有乙個強連通分量,這樣的話,我們直接對圖運用tarjan演算法,求出圖中強連通分量的個數,只有乙個強連通分量就說明該圖強連通,否則該圖不強連通。
這道題算是tarjan 的模板題
#include #include #include #include #include using namespace std;
struct list
;list *a[10005];
int now=1,sum;
int dfn[10005],low[10005];
bool instack[10005];
stacksta;
void tarjan(int x)
else if (instack[q->v]) low[x]=min(low[x],dfn[q->v]);
}if (dfn[x]==low[x])
}}int main()
memset(dfn,0,sizeof(dfn));
memset(instack,0,sizeof(instack));
sum=0;
for (int i=1;i<=n;i++)
if (!dfn[i]) tarjan(i);
if (sum==1) printf("yes\n"); else printf("no\n");
}return 0;
}
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需要請你寫個程式確認一下是否任意兩...
HDU 1269 迷宮城堡
題目傳送門 題目為中文題,題意不再贅述。思路 題目中最後一句話為突破口,對於任意的i和j,至少存在一條路徑可以從房間i到房間j,也存在一條路徑可以從房間j到房間i。說明該圖為強連通圖,判斷該圖中是否只有乙個強連通分量即可。模板題 下面放 此處用tarjan演算法寫的 include include ...