제출 #310750

#제출 시각아이디문제언어결과실행 시간메모리
310750CaroLindaTorrent (COI16_torrent)C++14
69 / 100
221 ms45676 KiB
#include <bits/stdc++.h>

#define sz(x) (int)(x.size())

const int MAXN = 3e5+10 ;

using namespace std ;

int n , a[2] ;
int cor[MAXN] ;
int dist[MAXN][2] ;
vector<int> adj[MAXN] , adj2[MAXN] ;
vector<pair<int,int> > edge ;

void dfs(int x, int father, int idx )
{
	for(auto e : adj2[x])
	{
		if(e == father ) continue ;

		dist[e][idx] = dist[x][idx]+1 ;
		dfs(e,x,idx ) ;

	}
}

int dfs2(int x, int father )
{

	vector<int> children ;
	for(auto e : adj[x])
	{
		if(e == father) continue ;
		children.push_back(dfs2(e,x)) ;
	}
	sort(children.begin() , children.end()) ;
	reverse(children.begin() , children.end()) ;

	int ans = 0 ;
	for(int i = 0 ; i < sz(children) ; i++ )
		ans = max(ans, children[i]+i+1 ) ;

	return ans ;

}

int main()
{
	scanf("%d%d%d", &n , &a[0] , &a[1] ) ;
	for(int i = 0 , u , v ; i <n-1 ; i++ )
	{
		scanf("%d%d", &u, &v ) ;
		edge.push_back(make_pair(u,v)) ;
		adj2[u].push_back(v) ;
		adj2[v].push_back(u);

	}

	dfs(a[0] , -1 , 0) ;
	dfs(a[1] ,-1 , 1 ) ;

	for(int i = 1 ; i <= n ; i++)
	{
		if( dist[i][0] <= dist[i][1] )
			cor[i] = 0 ;
		else cor[i] = 1 ;
	}

	for(auto e : edge )
	{
		int u = e.first ;
		int v = e.second ;
		if(cor[u] != cor[v]) continue ;
		adj[u].push_back(v) ;
		adj[v].push_back(u) ;
	}

	int ans = dfs2(a[0] , -1 ) ;
	ans = max(ans,dfs2(a[1],-1) ) ;

	printf("%d\n" , ans ) ;

}

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

torrent.cpp: In function 'int main()':
torrent.cpp:49:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   49 |  scanf("%d%d%d", &n , &a[0] , &a[1] ) ;
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
torrent.cpp:52:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   52 |   scanf("%d%d", &u, &v ) ;
      |   ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...