문제풀이/그래프 12

[JAVA] [그래프] 백준 1939 중량제한

문제 https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 코드 import java.io.*; import java.util.*; public class b1939 { static int[] parent; public static void main(String[] args) throws Exception { BufferedReader br=new BufferedReader(new Input..

[JAVA] [그래프] Pro 표 병합

문제 https://school.programmers.co.kr/learn/courses/30/lessons/150366?language=java# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import java.util.*; class Solution { int[] parent; String[] board; public int find(int x){ if(parent[x]!=x){ parent[x]=find(parent[x]); } return parent[x]; } public void union(int a, int b, int c, int ..

[파이썬] [그래프] 백준 16202 MST 게임

문제 https://www.acmicpc.net/problem/16202 16202번: MST 게임 첫 턴에 찾을 수 있는 MST는 총 5개의 간선 {(1, 3), (1, 2), (2, 4), (4, 6), (4, 5)}로 이루어져 있고, 비용은 16이다. 두 번째 턴에는 첫 턴에서 구한 MST에서 간선의 비용이 최소인 (2, 4)를 제거한 후 남아있 www.acmicpc.net 코드 n,m,k=map(int, input().split()) graph=[] parent=[] for i in range(n+1): parent.append(i) for i in range(1,m+1): a,b=map(int, input().split()) graph.append([a,b,i]) def find(x): if p..

[파이썬] [그래프] 백준 1005 ACM Craft

문제 https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 코드 import sys from collections import deque input=sys.stdin.readline t=int(input()) for _ in range(t): n,k=map(int, input().split()) graph=[[] for _ in range(n+1)] time=[0]+list(map(int, input().split())) indegree=[0]..

[파이썬] [그래프] 백준 1167 트리의 지름

문제 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 코드 from collections import deque import sys input=sys.stdin.readline def bfs(start): visited=[-1]*(v+1) queue=deque() queue.append(start) visited[start]=0 max_a=[0,0] #dis, node while queue: t=queue.popleft() fo..

[파이썬] [그래프] 백준 4195 친구 네트워크

문제 https://www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net 코드 from sys import stdin input = stdin.readline def find(x): if parent[x] != x: parent[x] = find(parent[x]) return parent[x] def union(a, b): a = find(a) b = find(b) if a != b: parent[b] = a number[a] += number[b] ..

[파이썬] [그래프] Pro 방의 개수

문제 https://programmers.co.kr/learn/courses/30/lessons/49190?language=python3 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 코드 from collections import defaultdict def solution(arrows): dx=[-1,-1,0,1,1,1,0,-1] dy=[0,1,1,1,0,-1,-1,-1] array=defaultdict(list) answer=0 row,col=0,0 for i in arrows: for _ in range(2): nx=row+dx[i] ny=col+dy[i] if (nx, ny..

[파이썬] [그래프] 백준 2252 줄 세우기

문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 코드 import sys from collections import deque input=sys.stdin.readline def sort(): queue=deque() for i in range(1,n+1): if parent[i]==0: queue.append(i) while queue: x=queue.popleft() result.append(..