混淆本semgent的代碼 強連通分量所以這些是兩個函數,我想是手推車計算採用c編程語言
void dfsloop1(int **g)
{
int i;
int temp=0;
for(i=0;i<875714;i++)
{
temp = f[i];
x[temp-1] = i;
}
for(i=875714;i>0;i--)
{
if(!explored[x[i-1]])
{
s = i-1;
dfs1(g,x[i-1]);
}
}
}
void dfs1(int **g,int i)
{
explored[i] = 1;
leader[i] = s;
int j;
for(j=0;j<a[i];j++)
{
if(!explored[(g[i][j]-1)])
{
dfs1(g,g[i][j]);
}
}
}
這裏探討陣列記賬節點的/頂點被選中或不如果它被選中然後說第i個頂點檢查then explored[i-1] = 1 else explored[i-1] = 0,a[i]
店多少頂點i+1
個頂點連接 例如頂點一號與2,4,5連接,然後a[0]
將是3,圖中鄰接表過去了,我已經在反向圖上運行dfs並將該神奇編號存儲在f [i] 使用kosaraju的算法,現在我試圖在我的原始圖上運行dfs g x [i] 我正在以遞增的順序存儲f [i],例如讓我們說9個頂點圖f[0] = 7,f[1] = 3,f[2] = 1,f[4] = 2,f[5] = 5,f[6] = 9,f[7]=4,f[8] = 6 then x[0] = 2
(這是最小的索引f[i]),x[1] = 4,x[2] = 1
等等。
,如果我留下一些什麼不清楚,請讓我知道。 感謝
頂點的總數爲875714
我是在新的計算器,如果我做錯了什麼讓我知道
感謝
請提供[MCVE。另見:[問]。 –
你的問題是什麼?在使用變量作爲數組索引之前,先進行一些範圍檢查通常是個好主意。 – imqqmi
我使用kosaraju的算法https://drive.google.com/open?id=0B-iTBQCLcXUabHMxRmRGNmNzY1U是一個例子 – help