当前位置: 代码迷 >> 综合 >> 洛谷 P1640 [SCOI2010]连续攻击游戏
  详细解决方案

洛谷 P1640 [SCOI2010]连续攻击游戏

热度:29   发布时间:2023-12-06 07:47:29.0

题目:连续攻击游戏

思路:二分图匹配问题。

代码:

#include<bits/stdc++.h>
using namespace std;#define maxn 1000000
#define maxm 10000
#define read(x) scanf("%d",&x)int n;
vector<int> a[maxn+5];
int use[maxm+5];
int mch[maxn+5];int dfs(int x) {
    if(use[x]) return false;use[x]=true;for(int i=0;i<a[x].size();i++) {
    int y=a[x][i];if((!mch[y])||dfs(mch[y])) {
    mch[y]=x;return true;}}return false;
}int main() {
    read(n);for(int i=1;i<=n;i++) {
    int x,y;read(x),read(y);a[x].push_back(i);a[y].push_back(i);}int ans=0;for(int i=1;i<=maxm;i++) {
    if(dfs(i)) ans++;else break;memset(use,0,sizeof(use));}printf("%d",ans);}