zoukankan      html  css  js  c++  java
  • 【luogu P2071 座位安排】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2071#sub

    邻接表 + 匈牙利

    把之前的邻接矩阵匈牙利变成邻接表

    要不然存不下...

    code:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 using namespace std;
     6 inline int read()
     7 {
     8     int ret=0;
     9     char c=getchar();
    10     while (c<'0' || c>'9') c=getchar();
    11     while (c>='0' && c<='9'){
    12         ret=((ret<<3)+(ret<<1))+c-'0';
    13         c=getchar();
    14     }
    15     return ret;
    16 }
    17 const int maxn = 4010;
    18 int n, ans, cnt;
    19 int link[maxn], head[maxn];
    20 bool vis[maxn];
    21 struct edge{
    22     int v,next;
    23 }e[maxn<<2];
    24 void add(int u, int v)
    25 {
    26     e[++cnt].v = v;
    27     e[cnt].next = head[u];
    28     head[u] = cnt;
    29 }
    30 bool dfs(int u)
    31 {
    32     int v = head[u];
    33     for(int i = v; i != 0; i = e[i].next)
    34     {
    35         if(!vis[e[i].v])
    36         {
    37             vis[e[i].v] = 1;
    38             if(!link[e[i].v] || dfs(link[e[i].v])) 
    39             {
    40                 link[e[i].v] = u;
    41                 return 1;
    42             }
    43         }    
    44     }
    45     return 0;
    46 }
    47 int main()
    48 {
    49     int u,v;
    50     n = read();
    51     for(int i = 1; i <= n*2; i++)
    52     {
    53         u = read(); v = read();
    54         add(i,u);
    55         add(i,u+n);
    56         add(i,v);
    57         add(i,v+n);
    58     }
    59     for(int i = 1; i <= n*2; i++)
    60     {
    61         memset(vis,0,sizeof(vis));
    62         if(dfs(i)) ans++;
    63     }
    64     printf("%d",ans);
    65     return 0; 
    66 }

    隐约雷鸣,阴霾天空,但盼风雨来,能留你在此。

    隐约雷鸣,阴霾天空,即使天无雨,我亦留此地。

  • 相关阅读:
    Task 4.5 求二维数组中的最大连通子数组之和
    Task 6.4 冲刺Two之站立会议4
    《程序员开发心理学》阅读笔记二
    第二次站立会议9
    第二次站立会议8
    第二次站立会议7
    第二次站立会议6
    第二次站立会议5
    第二次站立会议4
    第二次站立会议3
  • 原文地址:https://www.cnblogs.com/MisakaAzusa/p/8858260.html
Copyright © 2011-2022 走看看