数组尽力开最大了 还没什么用
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
vector <int> p[100005];
bool visited[100005];
int match[100005], ansg[100005];
bool dfs(int u)
{
for(auto v : p[u])
{
if(!visited[v])
{
visited[v] = 1;
if(!match[v] || dfs(match[v]))
{
match[v] = u;
ansg[u] = v;
return 1;
}
}else{
continue;
}
}
return 0;
}
int main()
{
cin >> n >> m;
for(int i = 1;i <= m; i++)
{
int u, v;
cin >> u >> v;
p[i].push_back(v);
if(u!=v)p[i].push_back(u);
}
for(int i = 1;i <= m; i++)
{
if(dfs(i))
ans++;
else
break;
for(int i = 1;i <= 100001; i++)
visited[i] = 0;
}
cout << ans << '\n';
for(int i = 1;i <= ans; i++)
{
cout << ansg[i] << '\n';
}
return 0;
}