| ||||||||||
| 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 | |||||||||
我的加读入优化后才30多行#include <cstdio>
int read()
{
int x=0,f=1;char c=getchar();
while (c<'0' || c>'9'){if (c=='-')f=-1;c=getchar();}
while (c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-48;c=getchar();}
return x*f;
}
const int MAXN=150005;
int n,k,ans;
int f[MAXN];
inline int find(int x)
{
return f[x]==x?x:f[x]=find(f[x]);
}
int main()
{
n=read();k=read();
for (int i=1;i<=3*n;i++) f[i]=i;
int id,x,y;
for (int i=1;i<=k;i++){
id=read();x=read();y=read();
if ((x>n||y>n)&&++ans)continue;
if (id==1){
if ((find(x)==find(y+n)||find(x+n)==find(y))&&++ans)continue;
f[find(x)]=find(y);f[find(x+n)]=find(y+n);f[find(x+2*n)]=find(y+2*n);
}
else if (id==2){
if ((find(x)==find(y)||find(x)==find(y+2*n))&&++ans)continue;
f[find(x)]=find(y+n);f[find(x+2*n)]=find(y);f[find(x+n)]=find(y+2*n);
}
}
printf("%d\n",ans);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator