二分图判定(染色法)
2017-05-02 10:20
337 查看
vector<int> g[10000];
int V,E,color[10000];
bool dfs(int v,int c)
{
color[v]=c;
for(int i=0; i<g[v].size(); i++)
{
if(color[g[v][i]]==c)return false;
if(color[g[v][i]]==0&&!dfs(g[v][i],-c))
return false;
}
return true;
}
void solve()
{
for(int i=0; i<V; i++)
{
if(color[i]==0)
{
if(!dfs(i,1))
{
printf("no\n");
return ;
}
}
}
printf("yes\n");
}
int main()
{
int i,u,v;
//srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
//for( i=0;i<10;i++)
//push(int(rand()%11));
scanf("%d%d",&V,&E);
for(i=0; i<E; i++)
{
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
solve();
return 0;
}
int V,E,color[10000];
bool dfs(int v,int c)
{
color[v]=c;
for(int i=0; i<g[v].size(); i++)
{
if(color[g[v][i]]==c)return false;
if(color[g[v][i]]==0&&!dfs(g[v][i],-c))
return false;
}
return true;
}
void solve()
{
for(int i=0; i<V; i++)
{
if(color[i]==0)
{
if(!dfs(i,1))
{
printf("no\n");
return ;
}
}
}
printf("yes\n");
}
int main()
{
int i,u,v;
//srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
//for( i=0;i<10;i++)
//push(int(rand()%11));
scanf("%d%d",&V,&E);
for(i=0; i<E; i++)
{
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
solve();
return 0;
}
相关文章推荐
- 判定二分图——染色法VjP1462小胖的难题
- uva 11396 - Claw Decomposition(二分图判定)
- POJ 2942Knights of the Round Table(二分图判定+双连通分量)
- 【训练题】二分图判定
- poj2942[补图+点双连通分量+交叉染色法判定二分图(奇圈判定)]
- uva 11396 二分图判定
- hdoj 2444 The Accomodation of Students(裸的二分图判定+匈牙利)
- 点双联通和二分图着色(二分图判定)模板
- hdu2444(二分图判定+二分图匹配)
- 二分图的判定模板(dfs,bfs)
- hihoCoder #1121 : 二分图一•二分图判定
- 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil
- POJ 1904 King's Quest 强连通分量+二分图增广判定
- HDU 2444 The Accomodation of Students(二分图判定 + 二分图匹配)
- CF687A. NP-Hard Problem[二分图判定]
- hdu 5899 oasis in desert(acm/icpc 沈阳赛区网络赛,Floyd+二分图判定+最大匹配,好难啊)
- SRM 593 Div1 L1:HexagonalBoard,用染色法判断无向图是否为二分图
- poj 2942 Knights of the Round Table(无向图的双连通分量+二分图判定)
- 【连通图|双连通+二分图判定】POJ-2942 Knights of the Round Table
- Uva 11396 Claw Decomposition __二分图判定__C__