반응형

https://www.acmicpc.net/problem/17089

 

17089번: 세 친구

첫째 줄에 사람의 수 N(3 ≤ N ≤ 4,000), 친구 관계의 수 M(0 ≤ M ≤ 4,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계를 의미하는 두 정수 A, B가 주어진다. 친구 관계는 A와 B, 그리고 B와 A가 친

www.acmicpc.net

 

예제 입력 1을 그래프로 나타내면 다음과 같습니다.

1 ㅡ 2

|  /  |

3 ㅡ 4 ㅡ 5

세 노드가 사이클을 이룰 때, 세 명이 서로 친구입니다.

번호가 더 작은 친구에서 번호가 더 큰 친구로 가는 방향 그래프로 가정 하겠습니다. (위 그림은 방향 생략)

1에서 2가 친구라면, 2와 친구인 사람들이 1이랑도 친구인지 판별해주면 됩니다.

세 친구 관계에서 서로의 수는 제외시켜야하므로 -6을 해줍니다.

 

#include<bits/stdc++.h>
#define INF 12000
using namespace std;
int n, m, a, b, ans = INF, c[4000] = { 0 };
vector<int> g[4000];
int main() {
	scanf("%d %d", &n, &m);
	while (m-- && scanf("%d %d", &a, &b)) {
		c[--a]++, c[--b]++;
		if (b < a) swap(a, b);
		g[a].push_back(b);
	}
	for (int i = 0; i < n; i++) for (int j : g[i]) for (int k : g[j])
		if (find(g[i].begin(), g[i].end(), k) != g[i].end()) ans = min(ans, c[i] + c[j] + c[k]);
	printf("%d", ans != INF ? ans - 6 : -1);
}

 

 

순위권이미지
순위권이미지

맞은사람과 숏코딩 순위권 안에 들 수 있었습니다!

반응형

'Algorithm' 카테고리의 다른 글

백준 1091 : 카드 섞기  (0) 2021.11.17
백준 2173 : 양파깡 만들기  (2) 2021.11.17
백준 2411 : 아이템 먹기  (0) 2021.11.17
백준 17244 : 아맞다우산  (0) 2021.11.17
백준 1915 : 가장 큰 정사각형  (0) 2021.11.17

+ Recent posts