zoukankan      html  css  js  c++  java
  • cogs660 矩阵游戏 二分图匹配

    填坑……链接:http://cogs.pro/cogs/problem/problem.php?pid=660

    题意:给出一个矩阵,有黑白双色,问是否可以使主对角线全为黑色。

    不能不说现在越来越垃圾了……眼看错误都看不出来……

    这道题显然可以网络流瞎切,但是我们考虑到填坑向需求,所以我们用二分图做它。把每一行看做$x$节点,列看做$y$节点,每个黑节点看做一条边,目标便是每个$x$节点完成匹配。

    然后……我菜翻了……神$TM$

     if(match[v]==-1||find(v)) 

    大声告诉我我是不是$SB$!

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 const int maxn=205;
     7 struct node
     8 {
     9     int from,to,next;
    10 }edge[(maxn*maxn)<<1];
    11 int head[maxn],tot;
    12 void addedge(int u,int v)
    13 {
    14     edge[++tot]=(node){u,v,head[u]};head[u]=tot;
    15 }
    16 int match[maxn],n;
    17 bool used[maxn];
    18 int find(int x)
    19 {
    20     for(int i=head[x];i;i=edge[i].next)
    21     {
    22         int v=edge[i].to;
    23         if(!used[v])
    24         {
    25             used[v]=1;
    26             if(match[v]==-1||find(match[v]))
    27             {
    28                 match[v]=x;
    29                 return 1;
    30             }
    31         }
    32     }
    33     return 0;
    34 }
    35 int haha()
    36 {
    37     freopen("qmatrix.in","r",stdin);
    38     freopen("qmatrix.out","w",stdout);
    39     int t;scanf("%d",&t);
    40     while(t--)
    41     {
    42         tot=0;
    43         memset(head,0,sizeof(head));
    44         scanf("%d",&n);
    45         for(int i=1;i<=n;i++)match[i]=-1;
    46         for(int i=1;i<=n;i++)
    47             for(int j=1;j<=n;j++)
    48             {
    49                 int x;scanf("%d",&x);
    50                 if(x)addedge(i,j);
    51             }
    52         int cnt=0;bool meizhaodao=0;
    53         for(int i=1;i<=n;i++)
    54         {
    55             memset(used,0,sizeof(used));
    56             if(!find(i))
    57             {
    58                 meizhaodao=1;
    59                 break;
    60             }
    61         }
    62         if(meizhaodao)puts("No");
    63         else puts("Yes");
    64     }
    65 }
    66 int sb=haha();
    67 int main(){;}
    cogs660
  • 相关阅读:
    VS2010、SQL Server 2008和SQL Server 2012安装详解
    IIS服务寄宿
    C#中错误:不包含适合于入 口点的静态“Main”方法 的解决方法
    硬件的一些性能指标
    SATA SAS SSD 硬盘介绍和评测
    mysql数据库锁定机制
    mysql日志设置优化
    MySQL硬件瓶颈分析
    可扩展性设计之数据切分
    硬件环境对系统性能的影响
  • 原文地址:https://www.cnblogs.com/Loser-of-Life/p/7348642.html
Copyright © 2011-2022 走看看