zoukankan      html  css  js  c++  java
  • hdu 5285 wyh2000 and pupil(二染色)

    第一次用vector解得题。值得纪念,这道题是二染色问题,我用bfs解得。就是染色,推断,计数问题,其

    实挺简单的,就是得判一下特殊情况,当n<2的时候就不能有解,由于题目要求每一个组至少有一个人。当没有不认识的

    人的时候就是一个组是n-1,还有一个组人数为1

    上代码:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<queue> 
    using namespace std;
    int visit[100005];
    int n,m,flag,ans1,ans2;
    vector<int>v[100005];
    int bfs(int x)
    {
    	queue<int>q;
    	q.push(x);
    	visit[x] = 1;
    	while(!q.empty())
    	{
    		int y = q.front();
    		q.pop();
    		if(visit[y] == 1)
    			ans1++;
    		else
    			ans2++;
    		for(int i=0; i<v[y].size(); i++)
    		{
    			if(visit[v[y][i]]==-1)
    			{
    				visit[v[y][i]] = !visit[y];
    				q.push(v[y][i]);
    			}
    			else
    			{
    				if(visit[v[y][i]]==visit[y])
    				{
    					return 0;
    				}
    			}
    		}
    	}
    	return 1;
    }
    void solve()
    {
    	int Max = 0;
    	memset(visit,-1,sizeof(visit));
    	for(int i=1; i<=n; i++)
    	{
    		ans1 = ans2 =0;
    		//printf("size = %d i = %d
    ",v[i].size(),i);
    		if(v[i].size()==0)
    			continue;
    		if(visit[i]==-1&&!bfs(i))
    		{
    			flag = 1;
    			break;
    		}
    		Max += min(ans1,ans2);
    		
    		//printf("ans1 = %d ans2 = %d
    ",ans1,ans2);
    	}
    	if(flag)
    		printf("Poor wyh
    ");
    	else
    		printf("%d %d
    ",n - Max,Max);
    	return ;
    	
    }
    int main()
    {
    	int T,c,i,j,a,b;
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d%d",&n,&m);
    		for(i=1; i<=n; i++)
    			v[i].clear();
    		for(i=1; i<=m; i++)
    		{
    			scanf("%d%d",&a,&b);
    			v[a].push_back(b);
    			v[b].push_back(a);
    		}
    		if(n < 2)
    		{
    			puts("Poor wyh");
    			continue;
    		}
    		if(m == 0)
    		{
    			printf("%d 1
    ",n-1);
    			continue;
    		} 
    		flag = 0;
    		solve();
    	}
    	return 0;
    } 


  • 相关阅读:
    Jqurey 得到url参数 getUrlParam
    JQUERY获取当前页面的URL信息
    TextView,imageView属性讲解
    滑动解锁
    显示界面跳转,隐式跳转
    代码进行Relativelayout,constraintLayout布局
    代码布局-LinearLayout
    实例xml拖拽详细方法布局
    layout布局
    AS资源了解
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6829330.html
Copyright © 2011-2022 走看看