zoukankan      html  css  js  c++  java
  • UVa 11419 SAM I AM

    很神奇的方法……参悟中

     1 /**/
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 #include<vector>
     8 using namespace std;
     9 const int mxn=12000;
    10 vector<int>e[mxn];
    11 int link[mxn],vis[mxn];
    12 bool mk[mxn];
    13 int n,r,c;
    14 void init(){
    15     for(int i=1;i<mxn;i++)e[i].clear();
    16     memset(link,0,sizeof link);
    17 }
    18 bool dfs(int x){
    19     int i,j;
    20     mk[x]=1;
    21     for(i=0;i<e[x].size();i++){
    22         int v=e[x][i];
    23         if(!vis[v]){
    24             vis[v]=1;
    25             mk[v]=1;
    26             if(!link[v] || dfs(link[v])){
    27                 link[v]=x;
    28                 link[x]=v;
    29                 return 1;
    30             }
    31         }
    32     }
    33     return 0;
    34 }
    35 void path(){
    36     int i,j;
    37     memset(mk,0,sizeof mk);
    38     for(i=1;i<=r;i++){
    39         if(!link[i]){
    40             memset(vis,0,sizeof vis);
    41             dfs(i);
    42         }
    43     }
    44     for(i=1;i<=r;i++){
    45         if(!mk[i]){
    46             printf(" r%d",i);
    47         }
    48     }
    49     for(i=1;i<=c;i++){
    50         if(mk[i+r]){
    51             printf(" c%d",i);
    52         }
    53     }
    54     printf("
    ");
    55     return;
    56 }
    57 int main(){
    58     while(scanf("%d%d%d",&r,&c,&n) && r && c && n){
    59         init();
    60         int i,j;
    61         int x,y;
    62         for(i=1;i<=n;i++){
    63             scanf("%d%d",&x,&y);
    64             e[x].push_back(y+r);
    65             e[y+r].push_back(x);
    66         }
    67         int ans=0;
    68         for(i=1;i<=r;i++){//第一次匹配,算答案 
    69             memset(vis,0,sizeof vis);
    70             if(dfs(i))ans++;
    71         }
    72         printf("%d ",ans);
    73         path();//算路径 
    74     }
    75     return 0;
    76 }
  • 相关阅读:
    6-5-1
    static的作用
    第五小题:北京某高校。。。。
    机票预订系统问题定义及可行性分析
    银行储蓄系统问题定义及可行性分析
    软件工程和计算机科学的区别
    中文编码--中国程序员之”银弹“?
    开博第一日
    【转载】大牛很通俗地介绍《信号与系统》
    matlab绘图简单笔记
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5746538.html
Copyright © 2011-2022 走看看