#include<bits/stdc++.h>
using namespace std;
#define N 1000009
int n,u,v,ans,cur[N],vis[N];
vector<int>dis[N];
bool dfs(int x,int t)
{
for(int i=0;i<dis[x].size();i++)
{
int to=dis[x][i];
if(vis[to]==t) continue;
vis[to]=t;
if(!cur[to]||dfs(to,t))
{
cur[to]=x;
return true;
}
}
return false;
}
int main()
{
scanf("%d",&n),ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&u,&v);
dis[u].push_back(i);
dis[v].push_back(i);
}
memset(cur,0,sizeof(cur));
memset(vis,-1,sizeof(vis));
for(int i=1;i<=N;i++)
{
if(dfs(i,i)) ans++;
else break;
}
printf("%d\n",ans);
return 0;
}
首先,WA,70pts,Sub 1 #2 #3 #8。
其次,为什么要开到1000000?题目不是说属性值[1,10000]吗?