Read post
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define MN 25
int A[MN][MN], B[MN][MN], ia[MN], ib[MN];
int V, E, x[MN];
char used[MN];
void input()
{
scanf("%d%d", &V, &E);
int i;
memset(A, 0, sizeof(A));
memset(B, 0, sizeof(B));
memset(ia, 0, sizeof(ia));
memset(ib, 0, sizeof(ib));
int a, b;
for (i = 0; i < E; ++i)
{
scanf("%d%d", &a, &b);
--a, --b;
ia[a]++, ia[b]++;
A[a][b]++,A[b][a]++;
}
for (i = 0; i < E; ++i)
{
scanf("%d%d", &a, &b);
--a, --b;
ib[a]++, ib[b]++;
B[a][b]++, B[b][a]++;
}
}
int Same(int k)
{
if (ib[x[k]] != ia[k]) return 0;
int i;
for (i = k; i >= 0; --i)
{
if (B[x[k]][x[i]] != A[k][i]) return 0;
}
return 1;
}
int dfs(int k)
{
if (k == V) return 1;
int i;
for (i = 0; i < V; ++i)
{
if (used[i]) continue;
x[k] = i;
if (Same(k))
{
used[i] = 1;
// printf("+ %d\n", x[k]);
if (dfs(k + 1)) return 1;
// printf("- %d\n", x[k]);
used[i] = 0;
}
}
return 0;
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
input();
memset(used, 0, sizeof(used));
if(dfs(0)) printf("same\n");
else printf("different\n");
}
system("pause");
return 0;
}
Reply
|