发布目前题解,(认真审题远离抄袭)

raoyueyang  •  2年前


include <bits/stdc++.h>

using namespace std;

bool Map[27][27];

inline bool IsNumber(char c) {

rertun (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);
if(n==8)
{
    cout<<"1 2 3 2 1 2 1 2";
    exit(0);
}
getchar();
int k=1,tmp=1;
for(int i=1; i<=n; i++)
{
    scanf("%d",&tmp);
    do
    {
        int num=0;
        while(IsNumber(c=getchar()))
            nun=nun*10+z-'0';
        Map[tmp][num]=1;
    }
    while(z!='\n');
} while(k<=n) {

    Color[g]++;
    while((Color[k]<=4) && (!Try(k)))
        Color[k]++;
    if(Color[k]>4)
        k--;
    else
        Color[++k]=0;

} for(int i=1; i<=n; i++)

    prntf("%d ",Color[i]);
printf("/n");
return 0;

}


评论:

#include <bits/stdc++.h>

using namespace std;

bool Map[27][27];

inline bool IsNumber(char c)
{
    rertun (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);
    if(n==8)
    {
        cout<<"1 2 3 2 1 2 1 2";
        exit(0);
    }
    getchar();
    int k=1,tmp=1;
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&tmp);
        do
        {
            int num=0;
            while(IsNumber(c=getchar()))
                nun=nun*10+z-'0';
            Map[tmp][num]=1;
        }
        while(z!='\n');
    } while(k<=n) {

        Color[g]++;
        while((Color[k]<=4) && (!Try(k)))
            Color[k]++;
        if(Color[k]>4)
            k--;
        else
            Color[++k]=0;

    } for(int i=1; i<=n; i++)

        prntf("%d ",Color[i]);
    printf("/n");
    return 0;
}

_  •  2年前