poj 1236 強連通分量

2022-04-04 16:28:42 字數 1468 閱讀 8113

題目大意:

給定乙個n (n<=100)個點的有向圖,

問:q1、最少需要選擇多少個點,使得從這些點出發能遍歷完整個圖;

q2、最少需要新增多少條有向邊,使得整個圖成為強連通圖;

分析:求出強連通分量後進行縮點,得到每個強連通分量的入度in,出度out;

q1: 入度為0的強連通分量個數;

q2: max( 入度為0的強連通分量個數 , 出度為0的強連通分量個數  );

注意的地方:假如原圖就是乙個強連通圖。則顯然q2是0.

kosaraju:

view code

1

//file name: 1236.cpp2//

author: missa3//

created time: 2013/2/6 星期三 19:44:12

45 #include6 #include7 #include8 #include9 #include10 #include11 #include12 #include

13 #include14 #include15 #include16

using

namespace

std;

1718

const

int maxn = 1e2+5;19

intn;

20 vectoradj[maxn];

21 vectorradj[maxn];

22 vectorord;

23bool

vis[maxn];

24int

ma[maxn];

25int

cnt;

26void

init()

2733

ord.clear();

34 cnt=0;35

}36void dfs1(int

v)37

44void dfs2(int

v)45

52void

kosaraju()

5368}69

}70void

read()

7181}82

}83void

solve()

8498}99

for(int i=1;i<=cnt;i++)

100104 printf("

%d\n

",ans1);

105if(cnt==1)//

原圖是乙個強連通分量

106 printf("

0\n"

);107

else

108 printf("

%d\n

",max(ans1,ans2));

109}

110int

main()

111119

return0;

120 }

POJ 1236 強連通分量

題目鏈結 翻譯一下題目吧,大致含義就是,有n個學校,現在要向n個學校傳遞乙個軟體,如果a學校願意支援b學校,那麼給了a,a就會給b,但是a支援b但是b不一定支援a 有向圖警告 要求什麼呢,最少給多少個學校就可以給到全部的學校,最少加幾個支援關係,可以使得給任意乙個學校就可以傳遞到全部學校去。思路 第...

poj1236 強連通分量 縮點

題意 n 2 題解 找強連通分量,縮點。記f i 為縮完點後的新圖中各點入度,g i 為出度,ans1為f i 0的點的數目,ans2為g i 0的點的數目則第一問為ans1,第二問則為max。至於第二問的解釋,我的想法是對於得到的dag圖,考慮其中的出度為0的點和入度為0的點組成的點集v,將這些點...

poj 1236 強連通分量 縮點

有向無環圖中所有入度不為0的點,一定 可以由某個入度為0的點出發可達。假定有 n 個入度為0的點,m個出度為0的點,max m,n 就是第二個問題的解。include include include include include include include using namespace st...