我找到這個代碼,如果該圖是一個強連通分量如何查找整個圖是否是一個強連通的組件?
vector<int> G[2005];
int depth = 0;
void dfs(int u)
{
visited[u] = 1;
low[u] = ++depth;
for(int i=0;i<G[u].size();++i)
{
int v = G[u][i];
if(!visited[v])
dfs(v);
low[u] = min(low[u],low[v]);
}
}
我跑DFS(1),然後對 我檢查每個頂點如果對所有頂點低[U] == 1和每個頂點都被訪問過。 這是正確的方法嗎?它應該是,但不知何故它不起作用。 這是我想要實現的一個問題http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=2938&mosmsg=Submission+received+with+ID+12516894
你有什麼數據結構?基本上和圖遍歷應該工作,當你標記訪問節點。 – dornhege
您正在遞增每次遞歸的深度。所以每個G [u] [i]的深度可能會不同,當我認爲如果它們在相同的循環中應該是相同的。 –
是的,但是我添加了'low [u] = min(low [u],low [v])這一行,所以如果它是一個連接組件,所有的最低值應該是1。頂點1. –