Pagini recente » Cod sursa (job #1752032) | Cod sursa (job #3245817) | Cod sursa (job #2460476) | Cod sursa (job #364212) | Cod sursa (job #2388159)
#include <bits/stdc++.h>
#define maxe 20000
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
struct muchie
{
int gm, gM, c1, c2;
};
muchie v[maxe+5];
int grad[maxe+5];
bool viz[maxe+5];
vector <pii> cup;
bool cmp ( muchie a, muchie b )
{
if ( a.gM != b.gM ) return a.gM < b.gM;
else return a.gm < b.gm;
}
int main ()
{
ifstream fin ( "cuplaj.in" );
ofstream fout ( "cuplaj.out" );
int l, r, e; fin >> l >> r >> e;
int i, j, z, a, b, c;
for ( i = 0; i < e; i++ )
{
fin >> v[i].c1 >> v[i].c2; v[i].c1--; v[i].c2--;
grad[v[i].c1]++;
grad[l+v[i].c2]++;
}
for ( i = 0; i < e; i++ )
{
v[i].gm = min (grad[v[i].c1], grad[l+v[i].c2]);
v[i].gM = max (grad[v[i].c1], grad[l+v[i].c2]);
}
sort (v, v+e, cmp);
for ( i = 0; i < e; i++ )
if ( viz[v[i].c1] == 0 && viz[l+v[i].c2] == 0 )
{
viz[v[i].c1] = viz[l+v[i].c2] = 1;
cup.push_back ({v[i].c1,v[i].c2});
}
int ans = cup.size();
fout << ans << '\n';
for ( i = 0; i < ans; i++ )
fout << cup[i].fi + 1 << ' ' << cup[i].se + 1 << '\n';
fin.close ();
fout.close ();
return 0;
}