/*先吐槽下,剛開始沒看懂題,以為只能是乙個連通圖0t0
題意:給你乙個有向圖,求g圖中從v可達的所有點w,也都可以達到v,這樣的v稱為sink.求這樣的v.
解;求強連通+縮點。求所有出度為0的點即為要求的點。
注意:可能有多個聯通分支。
*/#include#include#include#define n 5100
struct node bian[n*n*2];
int head[n],yong,cnt,vis[n],stac[n],top,index,n,low[n],dfn[n],belong[n],outdegree[n];
void addedge(int u,int v)
int cmp(const void *a,const void *b)
void init()
int min(int a,int b)
void tarjan(int u)
else
if(vis[v])
low[u]=min(low[u],dfn[v]);
} if(low[u]==dfn[u])while(t!=u);
}}int main()
for(i=1;i<=n;i++)//縮點
if(!dfn[i])
tarjan(i);
//printf("%d\n",cnt);
for(i=0;itop=0;
for(i=1;i<=cnt;i++)
if(outdegree[i]==0)
qsort(stac,top,sizeof(int),cmp);//排序
for(i=0;iprintf("%d ",stac[i]);
printf("%d\n",stac[top-1]);
}return 0;
}
poj 2553 強連通縮點出度為0
題意 乙個有向圖 如果乙個點u能夠達到點v,v也能到達u,則u是sink點 找出所有的sink 按順序輸入 注意 如果點u能夠到達的所有點中,有乙個點不能到達u u就不算是sink 必須所有的點都能夠達到u 第二組資料 1 2 1 能到達的點事 1 2 但2不能到達1 所以1不是sink 2能夠到達...
poj 2186 強連通縮點
題意 有n只奶牛,奶牛有自己認為最受歡迎的奶牛。奶牛們的這種 認為 是單向可傳遞的,當a認為b最受歡迎 b不一定認為a最受歡迎 且b認為c最受歡迎時,a一定也認為c最受歡迎。現在給出m對這樣的 認為.的關係,問有多少只奶牛被除其本身以外的所有奶牛關注。思路 既然有單向傳遞關係,那麼關係圖可能就形成了...
poj 2553 強連通分支 出度為0的點
題目大意 題目分析 實現 c include include include include includeusing namespace std define max node 5005 define min a,b a b?a b define max a,b a b?a b vectorggr...