[BZOJ1242][Zju1015][弦图判定]Fishing Net弦图判定
2017-03-03 23:07
423 查看
题意
弦图判定弦图判定裸题……然而小号WA了一页
用MCS算出完美消除序列
设{vi+1,…,vn}中所有与vi相邻的点依次为vj1, …, vjk。
只需判断vj1是否与vj2, …, vjk相邻即可。
——CDQ
这里用一点要注意,vj1是在序列中标号最小的与vi相邻的点,不是任意点……我太菜没有注意到这点
#include <cstdio> #include <iostream> #include <algorithm> #define N 1010 using namespace std; int n,m,u,v,cnt; int G ,p ,vis ,c ,tmp ,rank ; int Map ; struct edge{ int t,nx; }E[5000005]; struct stp{ int g; stp *l,*r; }A ,*B ; inline void reaD(int &x){ char c=getchar(); x=0; for(;c>57||c<48;c=getchar());for(;c>=48&&c<=57;x=x*10+c-48,c=getchar()); } inline void Insert(int x,int y){ Map[x][y]=Map[y][x]=1; E[++cnt].t=y; E[cnt].nx=G[x]; G[x]=cnt; E[++cnt].t=x; E[cnt].nx=G[y]; G[y]=cnt; } inline void MCS(){ for(int i=1;i<=n;i++){ if(i>1) A[i].l=&A[i-1]; if(i<n) A[i].r=&A[i+1]; A[i].g=i; } B[0]=&A[1]; int maxx=0; for(int i=n;i;i--){ while(!B[maxx]) maxx--; int x=B[maxx]->g; p[i]=x; vis[x]=1; B[maxx]=B[maxx]->r; if(B[maxx]) B[maxx]->l=0; for(int j=G[x];j;j=E[j].nx) if(!vis[E[j].t]){ int v=E[j].t; if(A[v].l) A[v].l->r=A[v].r; else B[c[v]]=B[c[v]]->r; if(A[v].r) A[v].r->l=A[v].l; c[v]++; A[v].l=0; if(B[c[v]]) B[c[v]]->l=&A[v]; A[v].r=B[c[v]]; B[c[v]]=&A[v]; if(c[v]>maxx) maxx=c[v]; } } } int main(){ freopen("1242.in","r",stdin); freopen("1242.out","w",stdout); reaD(n); reaD(m); for(int i=1;i<=m;i++) reaD(u),reaD(v),Insert(u,v); MCS(); for(int i=1;i<=n;i++) rank[p[i]]=i; for(int i=1;i<=n;i++){ int g=0,Min=n+1,v=p[i],x; for(int j=G[v];j;j=E[j].nx) if(rank[E[j].t]>rank[v]){ tmp[++g]=E[j].t; if(rank[tmp[g]]<Min) Min=rank[tmp[g]],x=tmp[g]; } for(int j=1;j<=g;j++) if(tmp[j]!=x&&!Map[x][tmp[j]]) return puts("Imperfect"),0; } return puts("Perfect"),0; }
相关文章推荐
- [bzoj] 1242: Zju1015 Fishing Net弦图判定
- bzoj 1242: Zju1015 Fishing Net 弦图判定
- [BZOJ]1242: Zju1015 Fishing Net弦图判定
- bzoj 1242 Zju1015 Fishing Net 弦图判定
- [bzoj1242] Zju1015 Fishing Net弦图判定
- [BZOJ1242][Zju1015 Fishing Net弦图判定][完美消除序列]
- bzoj1242: Zju1015 Fishing Net弦图判定
- bzoj 1242 弦图判定 MCS
- ZOJ 1015 Fishing Net(弦图判定)
- ZOJ 1015 Fishing Net(弦图判定)
- [弦图判定 完美消除序列 MCS算法] BZOJ 1242 Zju1015 Fishing Net弦图判定
- 弦图ZOJ 1015 Fishing Net 判定方法
- [BZOJ1242]Fishing Net
- ZOJ 1015-Fishing Net(判断弦图)
- ZOJ 1015 弦图判定
- [ZOJ1015]Fishing Net-弦图判断
- ZOJ 1015 Fishing Net(判断弦图)
- ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net
- zoj-1015-fishing net 【弦图的判断】
- ZOJ 1015 Fishing Net 弦图MCS