📄문제
아래 그림과 같은 그래프 정보를 인접행렬로 표현해보세요.
⬇️ 입력
첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다.
그 다음부터 M줄에 걸쳐 연결정보와 거리비용이 주어진다.
6 9 1 2 7 1 3 4 2 1 2 2 3 5 2 5 5 3 4 5 4 2 2 4 5 5 6 4 5 |
⬆️ 출력
인접행렬을 출력하세요.
0 7 4 0 0 0 2 0 5 0 5 0 0 0 0 5 0 0 0 2 0 0 5 0 0 0 0 0 0 0 0 0 0 5 0 0 |
📝 풀이
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int N, M;
scanf_s("%d %d", &N, &M);
// 2차원 벡터를 0으로 초기화
vector<vector<int>> arr(N, vector<int>(N, 0));
int f, t, w; // from, to, weight
for (int i = 0; i < M; ++i)
{
scanf_s("%d %d %d", &f, &t, &w);
arr[f - 1][t - 1] = w;
}
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
printf("%d ", arr[i][j]);
printf("\n");
}
}
- 방향이 있는 그래프이기때문에 입력을 받을 때 인접행렬에 단방향 정보 가중치만 입력합니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 미로탐색(DFS) (0) | 2023.10.18 |
---|---|
[C++] 경로 탐색(인접행렬, DFS) 🔥 (0) | 2023.10.18 |
[C++] 병합 정렬 (0) | 2023.10.17 |
[C++] 특정 수 만들기 🔥 (0) | 2023.10.17 |
[C++] 합이 같은 부분집합 (0) | 2023.10.17 |