题目描述
邻接表模拟过程
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 110;
const int M = 160;
int h[N], e[M], ne[M], idx;
int res[N];
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx;
idx++;
}
int main()
{
int n,m;
cin>>n>>m;
memset(h, -1, sizeof h);
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
if(x<y)swap(x,y);
add(x,y);
}
res[1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=4;j++)
{
bool flag=false;
for(int k=h[i];k!=-1;k=ne[k])
{
if(res[e[k]]==j)flag=true;
}
if(!flag)
{
res[i]=j;
break;
}
}
}
for(int i=1;i<=n;i++)cout<<res[i];
return 0;
}