p7677 打了一大堆代码,最后只得了个14分RE, 代码一大堆都看晕了,大佬帮我看一下吧QWQ
#include<bits/stdc++.h>
#define uf(x,y,z) for(int x=y;x<=z;x++)
#define df(x,y,z) for(int x=y;x>=z;x--)
#define int long long
#define r read()
#define w(x) write(x)
using namespace std;
int n,m,bo;
struct node
{
int t[2];
int now;
}a[300010];
map<int,int>ma;
map<int,bool>mb;
int read()
{
int x=0,t=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')t=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch-48);
ch=getchar();
}
return x*t;
}
void write(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)write(x/10);
putchar(x%10+'0');
}
bool dfs(int x)
{
if(mb[x])return false;
if(!ma[a[ma[x]].t[!a[ma[x]].now]])
{
swap(ma[a[ma[x]].t[a[ma[x]].now]],ma[a[ma[x]].t[!a[ma[x]].now]]);
a[ma[x]].now!=a[ma[x]].now;
}
else
{
mb[x]=true;
if(dfs(a[ma[x]].t[!a[ma[x]].now]))
{
swap(ma[a[ma[x]].t[a[ma[x]].now]],ma[a[ma[x]].t[!a[ma[x]].now]]);
a[ma[x]].now!=a[ma[x]].now;
mb[x]=false;
return true;
}
else
{
mb[x]=false;
return false;
}
}
}
signed main()
{
n=r;m=r;
uf(i,1,n)
{
bo=0;
a[i].t[0]=r;a[i].t[1]=r;
if(!ma[a[i].t[0]])
{
ma[a[i].t[0]]=i;
a[i].now=0;
bo=1;
}
else if(!ma[a[i].t[1]])
{
ma[a[i].t[1]]=i;
a[i].now=1;
bo=1;
}
else if(dfs(a[i].t[0]))
{
ma[a[i].t[0]]=i;
a[i].now=0;
bo=1;
}
else if(dfs(a[i].t[1]))
{
ma[a[i].t[1]]=i;
a[i].now=1;
bo=1;
}
if(bo)
{
puts("LADICA");
}
else puts("SMECE");
}
return 0;
}