time limit: 10 sec memory limit: 162 mb
submit: 2909 solved: 1532
[submit][status][discuss]
每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數(a,b),表示牛a認為牛b受歡迎。 這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。
第一行兩個數n,m。 接下來m行,每行兩個數a,b,意思是a認為b是受歡迎的(給出的資訊有可能重複,即有可能出現多個a,b)
乙個數,即有多少頭牛被所有的牛認為是受歡迎的。
3 31 2
2 12 3
1100%的資料n<=10000,m<=50000
題解:抽象成有向圖,縮點後乙個點能被所有點訪問到的充要條件是出度為一且唯一(呵呵。。。)。。。輸出這個大點的數量就行。
1 #include2 #include3 #include4 #include5 #include6 #include7#define pau putchar(' ')
8#define ent putchar('\n')
9using
namespace
std;
10const
int maxn=100000+10,maxm=500000+10;11
int low[maxn],dfn[maxn],s[maxn],beg[maxn],top,scc,cz,indeg[10001],outdeg[10001];bool
ins[maxn];
12struct tedadj[maxm],*fch[maxn],*ms=adj;
13void add(int x,int y);fch[x]=ms++;return
;}14
void tarjan(int
u)if(low[u]==dfn[u])return;22
}23 inline int
read()
26while(isdigit(ch))x=10*x+ch-'
0',ch=getchar();
27return x*=sig;28}
29 inline void write(int
x)if(x<0)putchar('
-'),x=-x;
31int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;32
for(int i=len-1;i>=0;i--)putchar(buf[i]+'
0');return;33
}34void
count_edge()return;39
}40intn,m;
41void
init()
54return;55
}56void
work()
59void
print()
62int main()
BZOJ1051 HAOI2006受歡迎的牛
請原諒我,這題實在和bzoj1093太像 了,copy過來改一改,很多沒有用,然後一起嘿嘿嘿 include include include include include include include using namespace std typedef long long ll inline...
bzoj1051 HAOI2006 受歡迎的牛
bzoj1051 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。第一行兩個數n,m。接下來m行,每行兩個數a,...
bzoj1051 HAOI2006 受歡迎的牛
每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。第一行兩個數n,m。接下來m行,每行兩個數a,b,意思是a認為b...