1 条题解
-
4
#include<cstdio> #define N 10010 #define M 1000100 int n,m,i,x,y,k; int t[N]; struct edge { int to,next; }l[M<<1];int e; void add_e(int x,int y) { l[++e]=(edge){y,t[x]};t[x]=e; } int next[N<<1],pre[N<<1]; int w[N],q[N],dy[N]; void push(int x) { pre[next[x]=next[N+w[x]]]=x; next[pre[x]=N+w[x]]=x; } void del(int x) { pre[next[x]]=pre[x];next[pre[x]]=next[x]; } int main() { freopen("1.in","r",stdin); scanf("%d%d",&n,&m); for(i=1;i<=m;++i) { scanf("%d%d",&x,&y); add_e(x,y);add_e(y,x); } for(i=1;i<=n;++i) push(i); int now=0,ans=0; for(k=n;k;--k,++now) { while(!next[N+now])--now; x=next[N+now]; del(x); q[k]=x;dy[x]=k; int sum=1; for(i=t[x];y=l[i].to;i=l[i].next) if(!dy[y]) { del(y); ++w[y]; push(y); } else ++sum; if(sum>ans)ans=sum; } printf("%d\n",ans); }
- 1
信息
- ID
- 1006
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 35
- 已通过
- 10
- 上传者