.
.
.
.
.
分析
并查集
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a,b,p,w;
int f[20001]={0};
int get(int b)
{
if (f[b]==b) return b;
else
{
f[b]=get(f[b]);
return f[b];
}
}
int find(int a)
{
if (f[a]==a) return a; else return find(f[a]);
}
int main()
{
scanf("%d%d",&n,&m);
int t[10001]={0};
for (int i=1;i<=n;i++)
f[i]=i;
for (int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
int k1=find(b);
f[k1]=get(a);
}
for (int i=1;i<=n;i++)
f[i]=find(f[i]);
for (int i=1;i<=n;i++)
t[f[i]]++;
int ans=0;
for (int i=0;i<=10000;i++)
if (t[i]!=0) ans++;
w=ans-1;
if (w%2!=0) cout<<"Illyasviel"; else cout<<"Star-dust";
return 0;
}