#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100;
int n, edge, m = 4;
int g[maxn][maxn];
int x[maxn];
void MColoring(int k)
{ int j;
while(1) {
while(1) {
x[k] = (x[k] + 1) % (m + 1);
if(x[k] == 0) return;
for(j = 1; j <= k - 1; j++) {
if((g[k][j] == 1) && (x[k] == x[j])) break;
}
if(j == k) break;
}
if(k == n) {
for(int i = 1; i <= n; i++) {
printf("%d ", x[i]);
}
printf("\n");
return;
}
else MColoring(k+1);
}
}
int main() {
freopen("graph.txt", "r", stdin);
fill(g[0], g[0] + maxn * maxn, 0);
scanf("%d%d", &n, &edge);
while(edge--) {
int a, b;
scanf("%d%d", &a, &b);
g[a][b] = 1;
g[b][a] = 1;
}
MColoring(1);
return 0;
}
- 输入数据
- 运行结果