BOJ 1587 - 이분 매칭

image.png

$nA, nB$중, 짝수가 하나라도 있으면 그 쪽은 그쪽끼리 다 이어줄 수 있고 나머지는 최대한 이어주면 최적이다.

둘다 홀수일 땐, $+1$ 을 해줄 수 있는 홀수-홀수 번호를 잇는 간선이 하나라도 있으면 정답에 $+1$ 을 해주면 된다.

오늘 왜이리 그리디만 만나지

void solve() {  
   int n, m, M;  
   cin >> n >> m >> M;  
   if (n % 2 == 0 || m % 2 == 0) {  
      cout << n / 2 + m / 2;  
      return;   }  
   int ret = n / 2 + m / 2;  
   while (M--) {  
      int u, v;  
      cin >> u >> v;  
      u--, v--;  
      if (u % 2 == 0 && v % 2 == 0) {  
         cout << ret + 1;  
         return;      }  
   }  
   cout << ret;  
}

Tags:

Categories:

Updated:

Comments