求最小點基 poj 1236

2022-07-28 22:03:33 字數 1156 閱讀 3928

題意:

解題思路:只要算出強連通的個數,並且知道哪些強連通沒有入度,計數,然後第二個答案只要計數所有強連通入度為0,出度為0的個數,然後取兩者最大值,這就是要新增的最少邊數。。

view code

1   #include2   #include3

#define min(a,b) a4

#define max(a,b) a>b?a:b

5#define s 110

6using

namespace

std;

7intn;8

intmap[s][s],stack[s],dfn[s],low[s],top,time,exist[s],weight[s],count,ind[s],outd[s];

9void tarjan(int

u)10

21else

2226

} 27

if(low[u]==dfn[u])

28while(u!=v);38}

39}40int

main()

4153    ind[i]=outd[i]=exist[i]=dfn[i]=low[i]=0;54

}55for(int i=1;i<=n;i++)

5663

}64    count=time=top=0;65

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

6670

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

71

79} 80}

81int max1=0,max2=0;82

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

8387    max2=max(max1,max2);

88    printf("

%d\n

",max1);

89if(count==1)printf("

0\n"

);90

else

91    printf("

%d\n

",max2);

92}

93return

0;

94   }

POJ 1236 強連通分量

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

poj 1236 強連通分量

題目大意 給定乙個n n 100 個點的有向圖,問 q1 最少需要選擇多少個點,使得從這些點出發能遍歷完整個圖 q2 最少需要新增多少條有向邊,使得整個圖成為強連通圖 分析 求出強連通分量後進行縮點,得到每個強連通分量的入度in,出度out q1 入度為0的強連通分量個數 q2 max 入度為0的強...

poj1236 強連通分量 縮點

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