陈柏诚 • 2年前
using namespace std; bool Map[27][27];
inline bool IsNumber(char c) { return (c>='0' && c<='9'); } int Color[100],n,j=0;
inline bool Try(int k) { for(int i=1; i<=n; i++)
if(Map[k][i] && Color[i]==Color[k] && k!=i)
return 0;
return 1; }
int main() { char c; scanf("%d",&n); getchar(); int k=1,tmp=0; for(int i=1; i<=n; i++) {
scanf("%d",&tmp);
do
{
int num=0;
while(IsNumber(c=getchar()))
num=num*10+c-'0';
Map[tmp][num]=1;
}
while(c!='\n');
} while(k<=n) {
Color[k]++;
while((Color[k]<=4) && (!Try(k)))
Color[k]++;
if(Color[k]>4)
k--;
else
Color[++k]=0;
} for(int i=1; i<=n; i++)
printf("%d ",Color[i]);
printf("\n"); return 0; }
评论:
刚才那个不是我发的
include <bits/stdc++.h>
using namespace std; bool Map[27][27];
inline bool IsNumber(char c) { return (c>='0' && c<='9'); } int Color[100],n,j=0;
inline bool Try(int k) { for(int i=1; i<=n; i++)
if(Map[k][i] && Color[i]==Color[k] && k!=i)
return 0;
return 1; }
int main() { char c; scanf("%d",&n); getchar(); int k=1,tmp=0; for(int i=1; i<=n; i++) {
scanf("%d",&tmp);
do
{
int num=0;
while(IsNumber(c=getchar()))
num=num*10+c-'0';
Map[tmp][num]=1;
}
while(c!='\n');
} while(k<=n) {
Color[k]++;
while((Color[k]<=4) && (!Try(k)))
Color[k]++;
if(Color[k]>4)
k--;
else
Color[++k]=0;
} for(int i=1; i<=n; i++)
printf("%d ",Color[i]);
printf("\n"); return 0; }