본문 바로가기

CodingTest Exam/[C++] Algorithm Study

63. 인접행렬(가중치 방향그래프) (it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비) ★★☆☆☆

#include <stdio.h>
#include <vector>

using namespace std;

int main()
{
	int n, m, d1, d2, d3;
	scanf("%d %d", &n, &m);
	
	vector<int> num(n+1, 0);
	vector<vector<int>> ans(n+1, num);
	
	for(int i = 1; i <= m; i++)
	{
		scanf("%d %d %d", &d1, &d2, &d3);
		ans[d1][d2] = d3;
	}
	
	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <=n; j++)
			printf("%d ", ans[i][j]);
		puts("");
	}
	
	return 0;
}

1. 위 그림은 간선(edge)와 노드(node)로 이루어진 그래프이다. 간선에 가중치가 추가된 그래프이며, 이 때는 입력값을 3개받는다. 출발노드, 도착노드, 간선의 가중치 순이다.

2. 위 방법은 인접배열로 푼 방식인데, 정점이 200개 정도면 상관없지만 그 이상의 개수가 된다면 인접리스로 풀어야한다.