F. Graph Without Long Directed Paths
给定一个无向图
问能否得到一个有向图,图中的边方向不连续,输出边的方向
ac:
图染色问题,用广搜搜索判断
ac:
#include<bits/stdc++.h>
#define MAXN 250005
using namespace std;
vector<int> vc[MAXN];
int a[MAXN],b[MAXN];
int color[MAXN];
int n,m;
void bfs()
{
queue<int> que;
que.push(1);
color[1]=0;
while(!que.empty())
{
int u=que.front();
que.pop();
int len=vc[u].size();
for(int i=0;i<len;i++)
{
int v=vc[u][i];
if(color[v]==-1)
{
color[v]=1-color[u];
que.push(v);
}
else if(color[v]==color[u])
{
printf("NO\n");
return ;
}
}
}
printf("YES\n");
for(int i=0;i<m;i++)
printf("%d",color[a[i]]);
printf("\n");
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++)
color[i]=-1;
for(int i=0;i<m;i++)
{
scanf("%d%d",&a[i],&b[i]);
vc[a[i]].push_back(b[i]);
vc[b[i]].push_back(a[i]);
}
bfs();
return 0;
}