|
|
回复 @noip : 附议,Cogs ac在洛谷只有55分,
|
|
回复 @noip : 附议,Cogs ac在洛谷只有55分,
|
|
tarjan
题目 1309 [HAOI 2006]受欢迎的牛
2017-04-22 15:54:48
|
|
COGS的淼数据没有“有多个SCC的出度都为0”的数据,所以不判断符合要求的SCC是否唯一也可以AC,然而POJ是有这样的数据的...
题目 1309 [HAOI 2006]受欢迎的牛
2017-04-15 16:43:21
|
|
VIP蒟蒻的百题纪念。
|
|
数据弱QwQ这能过的代码POJ 2186死活不过
题目 1309 [HAOI 2006]受欢迎的牛
2017-01-17 09:10:28
|
|
邻接矩阵开不了的统计奇技淫巧
证明:缩点后的图中有出度的点不是受欢迎的。 假设它受欢迎,则所有点到它都有边,所以它和它的出点互达。因此不是DAG,与题设矛盾。 立得受欢迎的点出度为0 然而这说明出度为0是必要条件而不是充分条件。 所以要判断有几个这样的点。
题目 1309 [HAOI 2006]受欢迎的牛
2016-10-27 17:58:14
|
|
|
|
在 poj 上 过不了 wa
啊啊 求助 poj 2186 |
|
题目 1309 [HAOI 2006]受欢迎的牛
2014-05-22 20:49:55
|
|
题目 1309 [HAOI 2006]受欢迎的牛
2014-04-28 07:07:36
|
|
VIP上面的2b不要再刷了,2不2啊
题目 1309 [HAOI 2006]受欢迎的牛
2014-04-24 16:03:41
|
|
|
|
题目 1309 [HAOI 2006]受欢迎的牛
2014-04-24 15:19:18
|
|
#include<cstdio>
#include<cstring> #include<iostream> using namespace std; struct sky { int ff,tt,next; }; sky c[50005]; int _[10005],__[10005],___[10005],____[10005],_____[10005]; int ______[50005]; bool v[50005]; int n,m,top,now,colors,ans,tot,ret; char ch; inline void add(int x,int y) { tot++; c[tot].ff=x; c[tot].tt=y; c[tot].next=______[x]; ______[x]=tot; } inline int read() { while (!isdigit(ch = getchar())); ret = ch-48; while (isdigit(ch = getchar())) (ret *= 10) += ch-48; return ret; } void tarjan(int x) { now++; _[x]=__[x]=now; ___[++top]=x; v[x]=1; for (int i=______[x];i;i=c[i].next) { if (!_[c[i].tt]) { tarjan(c[i].tt); __[x]=min(__[x],__[c[i].tt]); } else { if (v[x]) { __[x]=min(__[x],_[c[i].tt]); } } } if (__[x]==_[x]) { colors++; while (___[top+1]!=x) { ____[___[top]]=colors; _____[colors]++; v[___[top]]=0; top--; } } } int main() { freopen("cow.in","r",stdin); freopen("cow.out","w",stdout); n = read(); m = read(); memset(______,0,sizeof(______)); tot=0; for (int i=1;i<=m;i++) { int x,y; x=read();y=read(); add(x,y); } now=top=colors=0; memset(_____,0,sizeof(_____)); memset(_,0,sizeof(_)); memset(v,0,sizeof(v)); for (int i=1;i<=n;i++) { if (_[i]) continue; tarjan(i); } memset(v,1,sizeof(v)); for (int i=1;i<=tot;i++) { if (____[c[i].ff]==____[c[i].tt]) continue; v[____[c[i].ff]]=0; } ans=0; for (int i=1;i<=colors;i++) { if (v[i]) { if (ans) { printf("0"); return 0; } ans=_____[i]; } } printf("%d",ans); } |
|
这成了机房里的竞速题了- -
题目 1309 [HAOI 2006]受欢迎的牛
2014-04-24 15:04:53
|
|
数据太弱了。。。我的明显错误做法都能过
题目 1309 [HAOI 2006]受欢迎的牛
2014-03-27 21:54:53
|
|
因为入度会有重边,所以要求出度。
题目 1309 [HAOI 2006]受欢迎的牛
2013-10-19 08:23:49
|
|
一开始居然把分支内部的边也算到它的入度里了……智商是硬伤……
|