hdu5285 二分图的判定
来源:互联网 发布:中国外汇储备数据 编辑:程序博客网 时间:2024/05/21 17:53
题意:有一群人,已知某两人之间互相不认识,要把这群人分成两部分,每部分至少一人,且在每部分内没有人互不认识。#include <iostream>#include<stdio.h>#include<string.h>#include<vector>using namespace std;const int N=100005; int T,n,m; vector<int> V[N]; int col[N]; int b[2],f,r; int q[N];int main(){#ifndef ONLINE_JUDGE freopen("aaa","r",stdin);#endif scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(int i=0;i<N;i++) V[i].clear(); memset(col,-1,sizeof col); if(n<2) { puts("Poor wyh"); continue; } if(m==0){ //两两相互认识 printf("%d %d\n",n-1,1); continue; } int u,v; for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); //加入边 V[u].push_back(v); V[v].push_back(u); } int big=0,small=0; bool ok=true; for(int i=1;i<=n && ok;i++) if(col[i]==-1){ f=r=b[0]=0; col[i]=b[1]=1;//b[0] b[1] 记录两种颜色的数量 q[r++]=i; //广度搜索 while(f<r &&ok){ int now=q[f++]; for(int i=0;i<V[now].size() && ok;i++){ int tmp=V[now][i]; if(col[tmp]==-1) { col[tmp]=col[now]^1; q[r++]=tmp; b[col[tmp]]++; } else{ if(col[tmp]==col[now]) ok=false;//出现矛盾 } } } big+=max(b[0],b[1]); //较多的颜色数量 small+=min(b[0],b[1]); } if(ok) printf("%d %d\n",big,small); else puts("Poor wyh"); } return 0;}
0 0
- hdu5285 二分图的判定
- 二分图判定 hdu5285 wyh2000 and pupil
- 二分图的判定
- 二分图的判定
- 二分图的判定
- 二分图的判定
- 二分图的判定
- 二分图的判定 -- 着色
- 【算法】二分图的判定
- HDU5285:wyh2000 and pupil(二分图染色 & 贪心)
- 二分图之二分图的判定
- Catch----二分图的判定与奇环的判定
- #1121 : 二分图一•二分图判定 (HIHOCoder +二分图的判定)
- [图的搜索]二分图判定
- 二分图的判定模板(dfs,bfs)
- Uva 10004(二分图的判定)
- 二分图的判定(C语言)
- p1403 二分+二分图判定
- hdoj1862 EXCEL排序(sort、结构体)
- 声明式事务管理
- jQuery判断获得的对象是否存在的方法
- ViewPager 详解(五)-----使用Fragment实现ViewPager滑动
- SQL常用代码
- hdu5285 二分图的判定
- iOS优秀博客收录(持续更新)
- HDOJ 1047 Integer Inquiry(多次大数相加)
- Broswer内核简单小结
- N皇后问题(HDU 2553)
- 杭电1032 The 3n + 1 problem
- web.xml标签(元素)出现顺序
- MATLAB常用1
- bootstrap:javascript的通用技术