| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
AC了,不容易呀,搞笑,这样的测试数据也拿出来用,要不是看了大家的提示,现在还在郁闷呢。#include<stdio.h>
struct ANM
{
int value;
int next;
};
int main()
{
// freopen("1.txt","r",stdin);
ANM anm[50000];
int anmsum,wdsum,i,bh,e,be,hh=0,k=3,sum,qian,next;
scanf("%d%d",&anmsum,&wdsum);
{
hh=0;
k=3;
for(i=0;i<anmsum;i++)
anm[i].value=-1;
while(wdsum--)
{
scanf("%d%d%d",&bh,&e,&be);
if(e>anmsum || e<=0 || be>anmsum || be<=0)
hh++;
else
if(bh==2 && e==be)
hh++;
else
{
e--;
be--;
if(anm[e].value==-1 && anm[be].value==-1)//都没连入
{
anm[e].value=k;
if(bh==1)
{
anm[be].value=k;
}
else
{
anm[be].value=k+1;
}
anm[e].next=be;
anm[be].next=e;
k+=3;
}
else
if(anm[e].value!=-1 && anm[be].value==-1)
{
sum=anm[e].value/3*3;
if(bh==1)
{
anm[be].value=anm[e].value;
}
else
{
anm[be].value=(anm[e].value+1)%3+sum;
}
anm[be].next=anm[e].next;
anm[e].next=be;
}
else
if(anm[e].value==-1 && anm[be].value!=-1)
{
sum=anm[be].value/3*3;
if(bh==1)
{
anm[e].value=anm[be].value;
}
else
{
anm[e].value=(anm[be].value+2)%3+sum;
}
anm[e].next=anm[be].next;
anm[be].next=e;
}
else
{
if(anm[e].value/3==anm[be].value/3)
{
if(!(((anm[e].value-anm[be].value+3)%3==2 && bh==2) ||
(anm[e].value==anm[be].value && bh==1)))
hh++;
continue;
}
sum=anm[e].value/3*3;
qian=anm[be].value;
if(bh==1)
{
anm[be].value=anm[e].value;
}
else
{
anm[be].value=(anm[e].value+1)%3+sum;
}
next=anm[be].next;
while(anm[next].next!=be)
{
anm[next].value=(anm[next].value-qian+anm[be].value+3)%3+sum;
next=anm[next].next;
}
anm[next].value=(anm[next].value-qian+anm[be].value+3)%3+sum;
anm[next].next=anm[e].next;
anm[e].next=be;
}
}
}
printf("%d\n",hh);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator