delete pics to save space
This commit is contained in:
55
7.1733.cpp
Normal file
55
7.1733.cpp
Normal file
@ -0,0 +1,55 @@
|
||||
#include<cstdio>
|
||||
#include<algorithm>
|
||||
using namespace std;
|
||||
struct { int l,r,ans; } query[10010];
|
||||
int n,m,fa[20010],d[20010],a[20010],cnt;
|
||||
inline int ff(int u)
|
||||
{
|
||||
int a=u,b,c=0;
|
||||
while(u!=fa[u]) c^=d[u],u=fa[u];
|
||||
while(a!=u)
|
||||
{
|
||||
b=fa[a];
|
||||
c^=d[a];
|
||||
d[a]^=c;
|
||||
fa[a]=u;
|
||||
a=b;
|
||||
}
|
||||
return u;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
#ifdef local
|
||||
freopen("pro.in","r",stdin);
|
||||
#endif
|
||||
scanf("%d%d",&n,&m);
|
||||
for(int i=1;i<=m;i++)
|
||||
{
|
||||
char s[10]; scanf("%d%d%s",&query[i].l,&query[i].r,s);
|
||||
query[i].ans=(s[0]=='o');
|
||||
a[++cnt]=query[i].l-1; a[++cnt]=query[i].r;
|
||||
}
|
||||
sort(a+1,a+1+cnt); n=unique(a+1,a+1+cnt)-(a+1);
|
||||
for(int i=1;i<=n;i++) fa[i]=i;
|
||||
for(int i=1;i<=m;i++)
|
||||
{
|
||||
int x=lower_bound(a+1,a+1+n,query[i].l-1)-a;
|
||||
int y=lower_bound(a+1,a+1+n,query[i].r)-a;
|
||||
int p=ff(x),q=ff(y);
|
||||
if(p==q)
|
||||
{
|
||||
if((d[x]^d[y])!=query[i].ans)
|
||||
{
|
||||
printf("%d\n",i-1);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fa[p]=q;
|
||||
d[p]=d[x]^d[y]^query[i].ans;
|
||||
}
|
||||
}
|
||||
printf("%d\n",m);
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user