zoukankan      html  css  js  c++  java
  • hdu 3829 Cat VS Dog 最大独立集

        http://acm.hdu.edu.cn/showproblem.php?pid=3829

    hdu 3829 Cat VS Dog

    题意:动物园有n只狗 m只猫,p个小朋友。规定一个小朋友喜欢猫就讨厌狗,喜欢狗就讨厌猫,要是他喜欢还留在动物园 不喜欢的搬出动物园 他就会很开心 求最多会有多少小朋友开心

    【思路】:两个小朋友间 要是他喜欢的你不喜欢 或你喜欢的他不喜欢 说明你俩矛盾 就在你们两个这之间连一条边 求出整个图的最大独立集 也就是说这集合里的点两两之间没有矛盾的  可以一个一个被满足。

     #include<iostream>
     #include<string.h>
     #include<vector>
    #include<stdio.h>
    using namespace std;
    
      vector<int > g[1002];
      int mark[1002],link[1002],n,m,p;
      struct node{char x[5];char y[5];}no[1002];
    
      int dfs(int x)
      {
          for(int i=0;i<g[x].size ();i++)
          {
              int v=g[x][i];
              if(!mark[v])
              {
                  mark[v]=1;
                  if(link[v]==-1||dfs(link[v]))
                  {
                      link[v]=x;
                      return 1;
                  }
              }
          }
          return 0;
      }
    
    
      int main()
      {
          int i,j,t,a,b;
          char c1,c2;
          while(~scanf("%d%d%d",&n,&m,&p))
          {
              for(i=0;i<p;i++)
                  g[i].clear ();
             
              for(i=0;i<p;i++)
              { 
                  //getchar();
                  cin>>no[i].x>>no[i].y;
              }
             // printf("oo  
    ");
          for(i=0;i<p;i++)
              for(j=i+1;j<p;j++)
                  if(i!=j&&(strcmp(no[i].x,no[j].y)==0||strcmp(no[i].y,no[j].x)==0))
                  {
                      g[i].push_back (j);
                      g[j].push_back (i);
                  }
                memset(link,-1,sizeof(link));
                int ans=0;
                for(i=0;i<p;i++)
                {
                    memset(mark,0,sizeof(mark));
                    ans+=dfs(i);
                }
            //    printf("a  %d
    ",ans);
                ans/=2;
                printf("%d
    ",p-ans);
          }
          return 0;
      }
    
    
                      
    
    
    
                  
    View Code

     

  • 相关阅读:
    javascript基础
    DOM操作
    js各种弹框
    ZeroMQ,史上最快的消息队列(转)
    mysql 存储过程
    java数据结构与算法(二)----栈和队列
    java数据结构与算法(一)----数组简单排序
    软件开发流程(转)
    Digest [information value filtering]
    Facebook 的系统架构(转)
  • 原文地址:https://www.cnblogs.com/assult/p/3443718.html
Copyright © 2011-2022 走看看