急求 匈牙利算法 TLE70pts
查看原帖
急求 匈牙利算法 TLE70pts
593635
jsd2718楼主2025/8/5 11:11

rt P1640 [SCOI2010] 连续攻击游戏
求调 匈牙利算法 %%%Orz
代码如下(码风优良)

#include<bits/stdc++.h>
#define MAXN 1000010
using namespace std;
int nx,ny,vis[MAXN],match[MAXN];
vector<int>g[MAXN];
bool find(int x)
{
    for(int i=0;i<g[x].size();i++)
    {
        int y=g[x][i];
        if(!vis[y])
        {
            vis[y]=true;
            if(match[y]<0||find(match[y]))
            {
                match[y]=x;
                return true;
            }
        }
    }
    return false;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
    int u,v;
    cin>>nx;
    for(int i=1;i<=nx;i++)
    {
        cin>>u>>v;
        g[u].push_back(i);
        g[v].push_back(i);
    }
    int ans=0;
    memset(match,-1,sizeof(match));
    for(int i=1;i<=min(nx,100000);i++)
    {
        memset(vis,0,sizeof(vis));
        if(find(i))++ans;
        else break;
    }
    cout<<ans;
    return 0;
}
2025/8/5 11:11
加载中...