// uoj-78.cc #include using namespace std; int main() { ios_base::sync_with_stdio(0), cin.tie(NULL); int nl, nr, m; cin >> nl >> nr >> m; vector> left(nl+1); vector> right(nr+1); vector choice_left(nl+1); vector choice_right(nr+1); vector vis(nl+1); while(m--) { int v, u; cin >> v >> u; left[v].push_back(u); right[u].push_back(v); } function dfs = [&](int v) -> bool { if (vis[v]) return false; vis[v] = true; for (auto&& u : left[v]) { if (choice_right[u]) { int t = choice_right[u]; if (dfs(t)) { choice_left[v] = u; choice_right[u] = v; vis[v] = false; return true; } } else { choice_left[v] = u; choice_right[u] = v; vis[v] = false; return true; } } return false; }; for (int i = 1; i <= nl; ++i) { if (!choice_left[i]) { dfs(i); } } vector res; int cnt = 0; for (int i = 1; i <= nl; ++i) { if (choice_left[i]) { ++cnt; } res.push_back(choice_left[i]); } cout << cnt << endl; for (auto&& j : res) cout << j << ' '; }