-
[BOJ]1967_트리의지름_Java알고리즘문제풀이/백준 2021. 6. 13. 16:14
--문제--
https://www.acmicpc.net/problem/1967
1967번: 트리의 지름
파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연
www.acmicpc.net
Class4
--문제 접근--
처음 문제를 봤을 때에 가중치만 더해주면 될 것이라고 판단하여 더하기만 하면 틀렸습니다가 나왔습니다.
그래서 문제를 다시 한번 읽고 트리의 지름에 대해 알아보고 한 번 더 코드를 짜기를 시작하였습니다.
위의 사진을 볼 때 한쪽만을 고려하면 1번 만을 고려하는 경우가 돼서 1번과 2번 양쪽을 고려하기 위하여 1번 사진의 맨 끝 노드를 구한 이후에 그 노드를 기준으로 한 번 더 가중치의 최댓값을 구해줬습니다.
그리고 N=1일때 오류가있는거 같아서 N이1이라면 길이가 0 이니 0으로하고 종료를 하였습니다.
그리고 문제1167과 똑같은 문제인데 입력이 달라서 입력의 차이만 똑같게해주어 진행하였습니다.
https://www.acmicpc.net/problem/1167
1167번: 트리의 지름
트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지
www.acmicpc.net
package Class4; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class BOJ_1967트리의지름 { static class Node{ int node,weight; public Node(int node, int weight) { super(); this.node = node; this.weight = weight; } } static List<Node>[] graph; static int ans; static boolean[] visit; static Node maxNode; public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); graph=new ArrayList[N+1]; visit=new boolean[N+1]; for(int i=0;i<=N;i++)graph[i]=new ArrayList<>(); for(int i=0;i<N-1;i++) { int from=sc.nextInt(); int to=sc.nextInt(); int weight=sc.nextInt(); graph[from].add(new Node(to,weight)); graph[to].add(new Node(from,weight)); } graph[0].add(new Node(1,0)); ans=0; Node maxN; maxN=dfs(graph[0].get(0),0); visit=new boolean[N+1]; maxNode=null; if(maxN==null) { System.out.println(0); System.exit(0); } ans=0; dfs(maxN,0); System.out.println(ans); } public static Node dfs(Node v,int weight) { if(ans<weight) { ans=weight; maxNode=v; } visit[v.node]=true; for(Node cur:graph[v.node]) { if(!visit[cur.node]) dfs(cur,weight+cur.weight); } return maxNode; } }
'알고리즘문제풀이 > 백준' 카테고리의 다른 글
[BOJ]1865_웜홀_Java (0) 2021.06.14 [BOJ]9663_Nqueen_Java (0) 2021.06.13 [BOJ]1167_트리의지름_Java (0) 2021.06.13 [BOJ]11723_집합_Java (0) 2021.06.12 [BOJ]1764_듣보잡_Java (0) 2021.06.11