“ Ctrl AC!一起 AC!”
原题:Map Coloring
我的翻译:
描述:
给出一个具有n个结点的图的边。这有三种颜色供你对这些结点上色。如何让每条边上的结点颜色不同决定了每个结点的颜色。
输入:
第一行:一个正整数。
接下来N行是一个N*N大小,由0和1构成的矩阵A={a[i][j]},它表明着结点i和j之间是否有一条边连着(1代表有,0代表无)。
输出:
N行,每行c[i]代表第i个结点的颜色。(c[i] = 1, 2, 或者 3).
不认识的单词:
matrix 矩阵
AC代码:
#include<iostream>
using namespace std;
int map[25][25]; //邻接表
int color[25];
int n;
void deal() {
color[1] = 1;
int k = 1, c = 1; //k为结点,c为颜色
k++;
while (k <= n) {
c = 1; //每个颜色都要遍历一遍
for (int i = 1; i <= n; i++) {
if (map[k][i] && c == color[i]) c++;
if (c >= 4) c = 1;
}
color[k] = c;
k++;
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> map[i][j];
}
}
deal();
for (int i = 1; i <= n; i++) {
cout << color[i] << endl;
}
return 0;
}
感谢阅读!!!
“ Ctrl AC!一起 AC!”