額,好水啊,有人說用tarjan但我覺得用tarjan都多餘了 ,直接維護乙個標記dfn:0表示沒有進棧 1表示在棧中 2表示已經出棧,然後每一次dfs的時候發現如果回到了祖先就說明出現了環,找乙個最小環就好了
可是我後來試了一下只有標記在棧中沒有標記出棧 居然過了9組,資料有點水啊
#include#include#include#define maxn 200020
using namespace std;
int n,head[maxn],tot,dfn[maxn],cnt,hi[maxn],min;
struct edgee[maxn*2];
void adde(int a,int b)
void dfs(int u,int h){
hi[u]=h;dfn[u]=1;
for(int i=head[u];i!=-1;i=e[i].next){
int v=e[i].v;
if(!dfn[v])dfs(v,h+1);
else if(hi[v]
NOIP 2015 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...
noip 2015 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人 都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是 編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時 將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人 可以從若干人那...
noip2015 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...