在线急等
by 羊叫兽同学 @ 2022-05-12 16:16:52
> $Talk \space is \space cheap, \space please \space show \space me \space the \space code.$
by JackMerryYoung @ 2022-05-12 16:21:10
@[JackMerryYoung](/user/224558)
???不是给你记录了吗
by 羊叫兽同学 @ 2022-05-14 13:57:44
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
#define int long long
using namespace std;
int n,m,s,l,e,first[1000000],nxt[1000000],u[1000000],v[1000000],d[1000000],i,j,k,ans,x,y,top,out[1000000];
bool flag[1000000];
bool dfs(int x)
{
int i;
for(i=first[x];i!=0;i=nxt[i])
{
if(flag[v[i]])
continue;
flag[v[i]]=true;
if(d[v[i]]==0||dfs(d[v[i]]))
{
d[v[i]]=x;
return true;
}
}
return false;
}
void add(int a,int b)
{
top++;
u[top]=a;
v[top]=b;
nxt[top]=first[a];
first[a]=top;
}
signed main()
{
scanf("%lld%lld",&m,&n);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
x++;
y++;
add(i,x);
if(x!=y)
add(i,y);
}
for(i=1;i<=m;i++)
{
memset(flag,false,sizeof(flag));
if(dfs(i))
ans++;
else
break;
}
printf("%lld\n",ans);
for(i=1;i<=n;i++)
if(d[i]!=0)
out[d[i]]=i;
for(i=1;i<=ans;i++)
printf("%lld\n",out[i]-1);
}
```
by 羊叫兽同学 @ 2022-05-14 13:58:10