Tinkoff Challenge – Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2), problem: (D) Labelling Cities Solution In C/C++

#include<bits/stdc++.h>
#define MAXN 300100
using namespace std;
struct node{int y,next;}e[MAXN<<1];
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if(ch==’-‘) f=-1; ch=getchar();}
while(isdigit(ch)) {x=x*10+ch-‘0’; ch=getchar();}
return x*f;
}
void dfs(int x){
vis[x]=1;
if(!col[e[i].y]){
for(int j=col[x]-1;j<=col[x]+1;++j)if(!used[j]){
col[e[i].y]=j; used[j]=1; break;
}
}
dfs(e[i].y);
}
}
int main(){
for(int i=1;i<=n;++i)p[i]=p[i-1]*31+i;
for(int i=1;i<=n;++i)hash[i]=p[i];
for(int i=1;i<=m;++i){
insert(x,y); insert(y,x);
hash[x]+=p[y]; hash[y]+=p[x];
}
col[1]=300001; used[col[1]]=1; vis[1]=1; dfs(1);
for(int i=1;i<=n;++i)if(!col[i]){puts(“NO”);return 0;}
puts(“YES”);
for(int i=1;i<=n;++i)printf(“%d “,col[i]);
printf(“\n”);
return 0;
}

(Visited 34 times, 1 visits today)
By |2017-07-24T16:39:18+00:00July 24th, 2017|Categories: Uncategorized||0 Comments