Files
OI-source/7.1733.cpp
2023-08-03 09:22:52 +08:00

56 lines
954 B
C++

#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;
}