NOIP2015 資訊傳遞 tarjan

2021-09-10 16:52:26 字數 695 閱讀 8849

題目思路:即強聯通分量中點的數量不為1的最小值是多少。tarjan的原理是維護dfn和low陣列,當下乙個點的low比自己小的時候就說明自己的兒子或自己能到達可以到達自己的點(自己的祖先),那麼也就形成了環。形成環就形成了乙個強聯通分量。

以下是**:

#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define per(i,a,b) for(int i=a;i>=b;i--)

#define ll long long

const int maxn = 2e5+5;

int x,n,dfn[maxn],low[maxn],vis[maxn],ans,tot;

vectorg[maxn];

stacks;

void tarjan(int u)

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

if(num>1)ans=min(ans,num);

}}int main()

rep(i,1,n)

}printf("%d\n",ans);

}return 0;

}

NOIP 2015 資訊傳遞

題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...

noip 2015 資訊傳遞

題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人 都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是 編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時 將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人 可以從若干人那...

noip2015 資訊傳遞

題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...