首页 > 其他 > 详细

【SCOI2010】连续攻击游戏

时间:2019-07-31 19:54:50      阅读:89      评论:0      收藏:0      [点我收藏+]

题面

https://www.luogu.org/problem/P1640

题解

// luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#define ri register int
#define N 10050
#define M 1000500

using namespace std;

int read() {
  int ret=0,f=0; char ch=getchar();
  while (ch<0 || ch>9) f|=(ch==-),ch=getchar();
  while (ch>=0 && ch<=9) ret=ret*10+(ch-0),ch=getchar();
  return f?-ret:ret;
}

int n,tim;
int vis[M],match[M];
vector<int> to[N];

bool dfs(int x) {
  for (ri i=0;i<to[x].size();i++) {
    int y=to[x][i];
    if (vis[y]==tim) continue;
    vis[y]=tim;
    if (!match[y] || dfs(match[y])) {
      match[y]=x;
      return 1;
    }
  }
  return 0;
}

int main(){
  n=read();
  for (ri i=1;i<=n;i++) {
    int a=read(),b=read();
    to[a].push_back(i); to[b].push_back(i);
  }
  tim=0;
  for (ri i=1;i<=10001;i++) {
    ++tim;
    if (!dfs(i)) {
      printf("%d\n",i-1);
      return 0;
    }
  }
}

 

【SCOI2010】连续攻击游戏

原文:https://www.cnblogs.com/shxnb666/p/11278610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!