強連通縮點 hdu3072

2021-08-07 03:08:34 字數 661 閱讀 5247

題意:實現某確定一點向其他所有的點直接或者間接地傳遞訊息。如果某幾個點之間訊息可以互達,則不收取費用,求所有點接受到訊息所花費的最小值。

連通分量內不收取費用,所以列舉找到聯通分量之間最小值。

#include#include#include#includeusing namespace std;

#define ll long long

#define me(a,b) memset(a,b,sizeof(a))

struct node

e[100005];

int dfn[50005],low[50005],head[50005],scnt[50005],ans[50005];

int tot,cnt,top;

void add(int u,int v,int val)

stackq;

int n,m;

int trijan(int x)

else if(!scnt[u])low[x]=min(low[x],dfn[u]);

}if(low[x]==dfn[x])

}}int main()

{ while(~scanf("%d%d",&n,&m))

{tot=top=cnt=0; me(head,-1);

for(int i=0;i

HDU 3072 強連通分量

題目鏈結 題目大意 為乙個有向連通圖加邊。使得整個圖全連通,有重邊出現。解題思路 先用tarjan把強連通分量縮點。由於整個圖肯定是連通的,所以列舉每一條邊,記錄到非0這個點所在連通分量的最小cost。一共需要累加cnt 1個連通分量的cost。在tarjan過程中的重邊,可以用鏈式前向星結構解決。...

HDU 3072 強連通分量

題目鏈結 題目大意 為乙個有向連通圖加邊。使得整個圖全連通,有重邊出現。解題思路 先用tarjan把強連通分量縮點。由於整個圖肯定是連通的,所以列舉每一條邊,記錄到非0這個點所在連通分量的最小cost。一共需要累加cnt 1個連通分量的cost。在tarjan過程中的重邊,可以用鏈式前向星結構解決。...

HDU 3072 強連通分量 topo

題意 給乙個有向圖,邊有權值。問最小的傳遞資訊代價,代價是邊的權值。乙個相互可達的頂點之間交換資訊是不需要代價的,肯定存在乙個點能把資訊傳遞到其餘所有點。思路 強連通分量 topo排序,強連通縮點以後找到入度為0的點進行topo,儲存資訊傳遞到每個新點用的最小代價即可。主要是題目描述太醜難以理解。原...