Source Code
#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
Min Vertex Cover 2 Rand()
GNU G++17
66 ms
16.3 MB
Wrong Answer