[JAVA][Baekjoon] 1033번 칵테일 🌟🌟

2025. 1. 13. 10:20·Coding Test/Baekjoon
728x90
반응형
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    static ArrayList<cNode>[] A;
    static long lcm;
    static boolean visited[];
    static long D[];
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = sc.nextInt();
        A = new ArrayList[N];
        visited = new boolean[N];
        D = new long[N];
        lcm = 1;
        for (int i = 0; i < N; i++) {
            A[i] = new ArrayList<cNode>();
        }
        for(int i = 0; i < N-1; i++) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            int p = sc.nextInt();
            int q = sc.nextInt();
            A[a].add(new cNode(b, p, q));
            A[b].add(new cNode(a, q, p));
            lcm *= (p * q/gcd(p, q));
        }
        D[0] = lcm;
        DFS(0);
        long mgcd = D[0];
        for(int i=1; i<N; i++) {
            mgcd = gcd(mgcd, D[i]);
        }
        for(int i=0; i<N; i++) {
            System.out.print(D[i]/mgcd + " ");
        }
    }
    public static long gcd(long a, long b){
        if(b==0) return a;
        else return gcd(b, a % b);
    }
    public static void DFS(int a) {
        visited[a] = true;
        for(cNode i : A[a]) {
            int next = i.getB();
            if(!visited[next]) {
                D[next] = D[a] * i.getQ() / i.getP();
                DFS(next);
            }
        }
    }
}
class cNode {
    int b;
    int p;
    int q;
    public cNode(int b, int p, int q) {
        super();
        this.b = b;
        this.p = p;
        this.q = q;
    }
    public int getB() {
        return b;
    }
    public int getP() {
        return p;
    }
    public int getQ() {
        return q;
    }
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > Baekjoon' 카테고리의 다른 글

[JAVA][Baekjoon] 21568번 Ax+By=C 🌟🌟  (0) 2025.01.14
[JAVA][Baekjoon] 1850번 최대공약수 🌟🌟  (0) 2025.01.12
[JAVA][Baekjoon] 1934번 최소공배수 🌟🌟  (1) 2025.01.11
[JAVA][Baekjoon] 11689번 GCD(n, k) = 1 🌟🌟🌟🌟  (0) 2025.01.11
[JAVA][Baekjoon] 1016번 제곱 ㄴㄴ 수 🌟🌟🌟🌟  (0) 2025.01.10
'Coding Test/Baekjoon' 카테고리의 다른 글
  • [JAVA][Baekjoon] 21568번 Ax+By=C 🌟🌟
  • [JAVA][Baekjoon] 1850번 최대공약수 🌟🌟
  • [JAVA][Baekjoon] 1934번 최소공배수 🌟🌟
  • [JAVA][Baekjoon] 11689번 GCD(n, k) = 1 🌟🌟🌟🌟
예롱메롱
예롱메롱
  • 예롱메롱
    예롱이의 개발 블로그
    예롱메롱
  • 전체
    오늘
    어제
    • 전체보기 (274)
      • 프로젝트 (35)
        • Wedle (12)
        • 인스타그램 클론 코딩 (13)
        • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (10)
      • 인프런 Spring 강의 정리 (79)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (7)
        • Spring 핵심 원리 - 기본편 (9)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편 (11)
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리.. (6)
        • 실전! 스프링 부트와 JPA 활용2 - API 개.. (5)
        • 실전! 스프링 데이터 JPA (7)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (11)
        • 실전! Querydsl (8)
      • Cloud (3)
      • Spring (6)
        • spring boot (5)
        • 소셜로그인 (1)
      • Docker (2)
      • DevOps (0)
      • Coding Test (114)
        • Programmers (37)
        • Baekjoon (76)
      • KB It's Your Life 6기 (1)
      • CS (18)
        • 알고리즘 (13)
        • 컴퓨터 구조 (1)
        • Operating System (0)
        • Network (0)
        • Database (4)
      • git (1)
      • Language (15)
        • Java (5)
        • C++ (6)
        • Python (4)
    • GITHUB GITHUB
    • INSTAGRAM INSTAGRAM
  • hELLO· Designed By정상우.v4.10.3
예롱메롱
[JAVA][Baekjoon] 1033번 칵테일 🌟🌟
상단으로

티스토리툴바