답안 #244111

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
244111 2020-07-02T15:36:58 Z kimbj0709 Network (BOI15_net) C++14
0 / 100
12 ms 12160 KB
#include <bits/stdc++.h>
using namespace std;
#define maxn 500050
vector<vector<int> > adj(maxn);
vector<int> leaf;
void dfs(int node,int parent){
  if(adj[node].size()==1){
    leaf.push_back(node);
    return;
  }
  for(auto k:adj[node]){
    if(k==parent){
      continue;
    }
    dfs(k,node);
  }
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);cout.tie(0);
  int no_of_input;
  int input1,input2;
  cin >> no_of_input;
  for(int i=0;i<no_of_input-1;i++){
    cin >> input1 >> input2;
    adj[input1].push_back(input2);
    adj[input2].push_back(input1);
  }
  if(no_of_input==2){
    cout << 1 << "\n";
    cout << "1 2";
    return 0;
  }
  int root = -1;
  for(int i=1;i<=no_of_input;i++){
    if(adj[i].size()>=2){
      root = i;
    }
  }
  dfs(root,-1);
  vector<pair<int,int> > ans;
  for(int i=0;i<leaf.size()/2;i++){
    ans.push_back({leaf[i],leaf[leaf.size()-i-1]});
  }
  if(leaf.size()%2==1){
    ans.push_back({leaf[leaf.size()/2],leaf[0]});
  }
  cout << ans.size() << "\n";
  for(auto k:ans){
    cout << k.first << " " << k.second << "\n";
  }
}

Compilation message

net.cpp: In function 'int32_t main()':
net.cpp:42:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<leaf.size()/2;i++){
               ~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12160 KB Output is correct
2 Incorrect 12 ms 12032 KB Breaking single line is causing network to disconnect.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12160 KB Output is correct
2 Incorrect 12 ms 12032 KB Breaking single line is causing network to disconnect.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12160 KB Output is correct
2 Incorrect 12 ms 12032 KB Breaking single line is causing network to disconnect.
3 Halted 0 ms 0 KB -