#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stdlib.h>
#include <time.h>
#include <stack>
#include <map>
#include <math.h>
#include <cmath>
#include <string.h>
using namespace std;
typedef vector<int> vi ;
typedef long long ll;
#define all(x) (x).begin() , (x).end()
#define pb push_back
const int N = 3e5+5 , MX = 1e9+1 ;
const ll MXL=1e18 , MOD = 1e9 + 7 ;
int a[N];
vector<int> gl[N] , gr[N],vv;
int main(){
// freopen("input.txt", "r", stdin);
int n , m , k ,mx=0 , cnt=0 ;
cin >> n >> m >> k ;
for(int i=0,x,y ; i<k ; i++ ){
scanf("%d%d" , &x , &y );
gl[--x].pb(--y);
gr[y].pb(x);
// cout<<gl[x].size()<< " ";
if( !(gl[x].size()-1))
cnt++;
}
// puts("");
for(int i =0 ; i<m ; i++ ){
int cnt2=0;
for(auto j : gr[i] ){
if( !(gl[j].size()-1) )
cnt2++;
}
vv.pb(max(0,cnt2-1));
}
sort(all(vv)) ;
// for ( auto i : vv ) cout<<i<< " ";
if(vv.size()>1)
cout<<cnt-(vv[vv.size()-1]+vv[vv.size()-2])<<endl;
else
cout<<cnt-vv[vv.size()-1]<<endl;
return 0 ;
}
Copy