1967번: 트리의 지름
파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연
www.acmicpc.net
[난이도] Gold4
[유형] 트리의 지름(DFS)
[풀이]
트리의 지름 : 트리에서 거리가 가장 먼 두 점 사이의 거리. 구
하는 방법 : 임의의 점에서 DFS로 가장 먼 점을 찾은 뒤에 그 점에서 DFS를 이용해서 가장 먼 점을 찾으면 그 거리가 트리의 지름이 된다.
#include <cstdio> #include <vector> #include <cstring> using namespace std; int N,ans,mxN,mxV; bool visit[10001]; vector<pair<int,int>> adj[10001]; void dfs(int n,int c){ visit[n] = 1; if(c>mxV){ mxV=c; mxN=n; } for(auto nxt : adj[n]){ if(!visit[nxt.first]) dfs(nxt.first,c+nxt.second); } } int main(){ scanf("%d",&N); for(int i=0;i<N-1;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); adj[a].push_back({b,c}); adj[b].push_back({a,c}); } dfs(1,0); memset(visit,0,sizeof(visit)); mxV=0; dfs(mxN,0); printf("%d",mxV); }
github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/1967.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 2056 : 작업 (C++) (0) | 2020.12.13 |
---|---|
[BOJ/백준][Gold4] 1976 : 여행 가자 (C++) (0) | 2020.12.13 |
[BOJ/백준][Gold4] 19238 : 스타트 택시 (C++) (0) | 2020.12.13 |
[BOJ/백준][Gold4] 1918 : 후위 표기식 (C++) (0) | 2020.12.13 |
[BOJ/백준][Gold4] 17779 : 게리맨더링2 (C++) (0) | 2020.12.13 |