結果
問題 | No.2418 情報通だよ!Nafmoくん |
ユーザー |
![]() |
提出日時 | 2023-10-03 16:20:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,305 bytes |
コンパイル時間 | 1,988 ms |
コンパイル使用メモリ | 202,172 KB |
最終ジャッジ日時 | 2025-02-17 04:06:43 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 TLE * 3 |
ソースコード
#include <bits/stdc++.h>#include<iostream>#include<map>#include<vector>#include <algorithm>#include<math.h>#include <iomanip>#include<set>#include <numeric>#include<string>using ll = long long;using namespace std;int main(){int n, m, cnt = 0, r = 0;cin >> n >> m;vector<int> lis(2*n+1);map<int, int> mp;for (ll i = 0; i < m; i++){int a, b, t1, t2;cin >> a >> b;t1 = min(a, b);if (!lis[a] && !lis[b]){lis[a] = t1;lis[b] = t1;} else if (lis[a] && !lis[b]){lis[b] = lis[a];} else if (!lis[a] && lis[b]){lis[a] = lis[b];} else {t1 = max(lis[a], lis[b]);t2 = min(lis[a], lis[b]);if (t1 != t2){for (int j = 0; j < 2*n + 1; j++){if (lis[j] == t1) lis[j] = t2;}}}}for (int j = 0; j < 2*n + 1; j++){if (lis[j]) mp[lis[j]]++;}for (auto iter = mp.begin(); iter != mp.end(); iter++){if (!(iter->second%2)) n -= (iter->second)/2;else {n -= (iter->second - 1)/2;r++;}if (r == 2){cnt++;r = 0;}}cout << n << endl;}