//并查集模板 https://blog.csdn.net/Tribleave/article/details/72878239
#include <bits/stdc++.h>
using namespace std;
int f[100005];
int find(int x)
{
if(x!=f[x])
{
f[x]=find(f[x]);
}
return f[x];
}
void merge(int x, int y)
{
int xx=find(x);
int yy=find(y);
if(xx!=yy)
{
f[xx]=f[yy];
}
}
int main()
{
int n, m;
while(scanf("%d%d", &n, &m)!=EOF)
{
for(int i=1; i<=n; i++)
{
f[i]=i;
}
int a, b;
for(int i=1; i<=m; i++)
{
scanf("%d%d", &a, &b);
merge(a, b);
}
scanf("%d%d", &a, &b);
if(find(a)==find(b))
{
printf("same\n");
}
else
{
printf("not sure\n");
}
}
return 0;
}
//匈牙利算法 acmsdut4181 最大匹配
#include <bits/stdc++.h>
using namespace std;
const int maxn=505;
int Map[maxn][maxn];
int vis[maxn];
int match[maxn];
int n, m;
bool dfs(int x)
{
for(int i=1;i<=m;i++)
{
if (!vis[i] && Map[x][i])
{
vis[i]=1;
if(match[i]==-1||dfs(match[i]))
{
match[i]=x;
return true;
}
}
}
return false;
}
int main()
{
int k, a, b, ans;
while(scanf("%d", &k)!=EOF)
{
ans=0;
if(k==0)
return 0;
scanf("%d%d", &n, &m);
memset(Map, 0, sizeof(Map));
memset(match, -1, sizeof(match));
for(int i=0;i<k;i++)
{
scanf("%d%d", &a, &b);
Map[a][b]=1;
}
for(int i=1;i<=n;i++)
{
memset(vis, 0, sizeof(vis));
if(dfs(i))
ans++;
}
printf("%d\n", ans);
}
return 0;
}