結果
| 問題 |
No.2403 "Eight" Bridges of Königsberg
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-08-04 21:42:28 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 125 ms / 2,000 ms |
| コード長 | 592 bytes |
| コンパイル時間 | 573 ms |
| コンパイル使用メモリ | 70,076 KB |
| 実行使用メモリ | 13,184 KB |
| 最終ジャッジ日時 | 2024-11-26 17:46:48 |
| 合計ジャッジ時間 | 2,849 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 31 |
ソースコード
#include<iostream>
#include<vector>
#include<cassert>
using namespace std;
int N,M;
bool vis[2<<17];
int deg[2<<17];
vector<int>G[2<<17];
int dfs(int u)
{
vis[u]=true;
int ret=max(deg[u],0);
for(int v:G[u])if(!vis[v])ret+=dfs(v);
return ret;
}
int main()
{
cin>>N>>M;
for(int i=0;i<M;i++)
{
int u,v;cin>>u>>v;
u--,v--;
G[u].push_back(v);
G[v].push_back(u);
deg[u]++;
deg[v]--;
}
int ans=0,zero=0,one=0;
for(int i=0;i<N;i++)if(!vis[i]&&!G[i].empty())
{
int r=dfs(i);
if(r==0)zero++;
else
{
ans+=r-1;
one++;
}
}
ans+=zero+one;
cout<<ans-!!ans<<endl;
}