結果
| 問題 |
No.806 木を道に
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-03-23 01:41:27 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 59 ms / 2,000 ms |
| コード長 | 1,299 bytes |
| コンパイル時間 | 1,773 ms |
| コンパイル使用メモリ | 171,592 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-19 10:34:44 |
| 合計ジャッジ時間 | 3,858 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 27 |
ソースコード
#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define REP(i, n) for (int i = 0, i##_len = (n); i < i##_len; ++i)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define INF 1145141919
int dy[] = {0, 0, 1, -1};
int dx[] = {1, -1, 0, 0};
int ny, nx;
typedef long long int ll;
using namespace std;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll m, ll n)
{
if ((0 == m) || (0 == n))
return 0;
return ((m / gcd(m, n)) * n);
}
ll llpow(ll x, ll y)
{
ll ans = 1;
REP(i, y)
ans *= x;
return ans;
}
int ctoi(char c)
{
if (c >= '0' && c <= '9')
{
return c - '0';
}
return 0;
}
////////////////////////////////////////////////////////////////////
int main()
{
int N; cin >> N;
vector<pair<int,int>> node(N);
vector<int> cnt(N+1);
REP(i,N-1) cin >> node[i].first >> node[i].second;
REP(i,N){
cnt[node[i].first]++;
cnt[node[i].second]++;
}
/*REP(i,N){
cout <<"i= "<< i+1 << " cnt[i]= " << cnt[i+1] << endl;
}
cout << endl;*/
ll res=0, remain=0;
REP(i,N){
if(cnt[i+1]==1) res++;
else if(cnt[i+1]>1) remain+=cnt[i+1]-2;
}
//cout << res << " " << remain << endl;
cout << remain << endl;
return 0;
}