zoukankan      html  css  js  c++  java
  • bzoj1854: [Scoi2010]游戏

    可以跑二分图

    到第一个不能匹配的点就退出

    嗯 还有并查集判环的做法?

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstdlib>
     5 #include<cstring>
     6 #include<string>
     7 
     8 using namespace std;
     9 
    10 void setIO(const string& a) {
    11     freopen((a+".in").c_str(), "r", stdin);
    12     freopen((a+".out").c_str(), "w", stdout);
    13 }
    14 
    15 const int N = 1000000 + 10, M = 10000 + 10;
    16 
    17 #include<vector>
    18 vector<int> G[M];
    19 int mat[M];
    20 
    21 void AddEdge(int u, int v) {
    22     G[u].push_back(v);
    23 }
    24 
    25 int vis[N], clk;
    26 
    27 bool find(int u) {
    28     for(unsigned i = 0; i < G[u].size(); i++) {
    29         int v = G[u][i];
    30         if(vis[v] != clk) {
    31             vis[v] = clk;
    32             if(mat[v] == 0 || find(mat[v])) {
    33                 mat[v] = u;
    34                 return 1;
    35             }
    36         }
    37     }
    38     return 0;
    39 }
    40 
    41 int work(int n) {
    42     for(int i = 1; i <= n; i++) {
    43         ++clk;
    44         if(!find(i)) return i - 1;
    45     }
    46     return n;
    47 }
    48 
    49 int main() {
    50     int x, y, n;
    51     scanf("%d", &n);
    52     for(int i = 1; i <= n; i++) {
    53         scanf("%d%d", &x, &y);
    54         AddEdge(x, i);
    55         AddEdge(y, i);
    56     }
    57     printf("%d
    ", work(n));
    58         
    59     return 0;
    60 }
  • 相关阅读:
    Neutron介绍
    docker下jenkins环境搭建
    OpenStack allinone环境搭建
    go中channel的部分理解
    总结一下我的面试经历
    MYSQL基础总结(1)
    struts2中判断数组的长度
    antd组件Checkbox
    React使用antd组件Radio
    React使用Echarts
  • 原文地址:https://www.cnblogs.com/showson/p/5006531.html
Copyright © 2011-2022 走看看