根據題意只要找出有多少個不連通的集合就可以了。。但是在判定的時候有環的話會有點麻煩,所以先縮點,在dfs。
但是如果有乙個點它的所有連的點不止它乙個入度的話 ,而且這個點的入度為0,那麼最後剩它的時候就不用問了。
#include#include#include#includeusing namespace std;
struct node
edge[300005],edge1[300005];
int head[100005],head1[100005];
int cnt=1,ans,cot=1,gs[100005];
void init()
void add(int from,int to)
void added(int from,int to)
int dfn[100005];
int low[100005];
int srcnt;
int pos[100005];
int srans[100005];
int deep=0;
int top;
int stackk[100005];
int used[100005];
int out[100005],outt[100005];
void tarjan(int rt)
else if(pos[to] == 0)
} if(low[rt] == dfn[rt])
srans[srcnt] = t; }}
void dfs(int u,int ttt)
}int main()
for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)}}
for(int i=1;i<=srcnt;i++)
for(int i=1;i<=srcnt;i++)
gs[used[i]]++;
}int flag=0;
for(int i=1;i<=n;i++)
}if(!flag)
else}}
double tt=(double)(n-ans)/(double)n;
printf("%.6lf",tt);
return 0;
}
bzoj2438 殺人遊戲
description 一位冷血的殺手潛入 na wiat,並假裝成平民。警察希望能在 n 個人裡面,查出誰是殺手。警察能夠對每乙個人進行查證,假如查證的物件是平民,他會告訴警察,他 認識的人,誰是殺手,誰是平民。假如查證的物件是殺手,殺手將會把警察乾掉。現在警察掌握了每乙個人認識誰。每乙個人都有可...
bzoj 2438 中山市選2011 殺人遊戲
一位冷血的殺手潛入 na wiat,並假裝成平民。警察希望能在 n 個人裡面,查出誰是殺手。警察能夠對每乙個人進行查證,假如查證的物件是平民,他會告訴警察,他認識的人,誰是殺手,誰是平民。假如查證的物件是殺手,殺手將會把警察乾掉。現在警察掌握了每乙個人認識誰。每乙個人都有可能是殺手,可看作他們是殺手...
bzoj2438 中山市選2011 殺人遊戲
感覺今天狀態起飛了!之前留的坑一調就a了,舒服!那麼這題之前一看就覺得,假如乙個人沒人認識實際上他必須查一下,那麼我第一次做的時候就把他抽象成了很多棵樹,然後我只查樹根,然後下面的每一層我都知道身份,那就沒有生命之憂了。然後特判一下有乙個人沒人認識tata也不認識別人,就是自己獨立出來的,那他最後留...