제출 #638420

#제출 시각아이디문제언어결과실행 시간메모리
638420xadNetwork (BOI15_net)C++14
100 / 100
553 ms63100 KiB
#include <bits/stdc++.h>
using namespace std ;
#define nn "\n"
#define x_x ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define intt int t; cin>>t; while(t--)
#define emp emplace_back
#define mod 1000000007
#define all(v) v.begin(), v.end()
#define sz(x) (int)x.size()
//#define a first
//#define b second
typedef long long ll;
vector<int>v;
void dfs(int i, int p, vector<int>adj[])
{
    if(sz(adj[i])==1){v.emp(i); return ;}
    for(auto j:adj[i])
        if(j!=p)dfs(j,i,adj);
}
void mxx(int i, int p, vector<int>adj[], int&ind ,int&mx, int dis=0)
{
    if(sz(adj[i])==1&&i!=ind)
    {
        if(dis>mx)ind=i,mx=dis; return ;
    }
    for(auto j:adj[i])
        if(j!=p)mxx(j,i,adj, ind, mx, dis+1);
}
int main()
{

    x_x
int n; cin>>n; vector<int>adj[n+2]; for(int i=1,x,y; i<n;i++)cin>>x>>y, adj[x].emp(y), adj[y].emp(x);
int mx=0,ind=1;
for(int i=1; i<=n; i++)if(sz(adj[i])>mx)mx=sz(adj[i]), ind=i;

dfs(ind,0,adj);
cout<<(sz(v)+1)/2<<nn;
for(int i=0; i<sz(v)/2; i++)cout<<v[i]<<' '<<v[i+(sz(v)/2)]<<nn;
if(sz(v)%2)
{
  ind=mx=0;  cout<<v.back()<<' '; ind=v.back(); mxx(v.back(),0,adj,ind,mx); cout<<ind;
}
return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

net.cpp: In function 'void mxx(int, int, std::vector<int>*, int&, int&, int)':
net.cpp:24:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   24 |         if(dis>mx)ind=i,mx=dis; return ;
      |         ^~
net.cpp:24:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   24 |         if(dis>mx)ind=i,mx=dis; return ;
      |                                 ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...