๐ก ์ด๋ฒ์๋ ๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๋ฅผ ๊ตฌํ ํ๋ ๋ฒ์ ๋ฐฐ์๋ณด์๋ค.
๋ฌธ์
๐ก ๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๋ฅผ ๊ตฌํํ์์ค.
๋น์ฐํ ์๋ ๋ฌธ์ ๊ธฐ์ ๋์ถฉ ๋ด๊ฐ ๋ง๋ค์๋ค.
ํด๋ต
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int a[1001][1001];
int n, m;
int main(void) {
scanf("%d %d", &n, &m);
for (int i = 0 ; i < m ; i++) {
int x, y;
scanf("%d %d", &x, &y);
// ์๋ก ์ฐ๊ฒฐ์ํด
a[x][y] = 1;
a[y][x] = 1;
}
for (int i = 1; i <= n ; i++) {
for (int j = 1 ; j <= n ; j++) {
printf("%d ", a[i][j]);
}
printf("\\n");
}
return 0;
}
์ค๋ช
๊ทธ๋ํ๋?
๊ทธ๋ํ๋ ์ฌ๋ฌผ์ ์ ์ (Vertex)์ ๊ฐ์ (Edge)์ผ๋ก ๋ํ๋ด๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.
- ์ธ์ ํ๋ ฌ(Adjacency Matrix) : 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๋ฐฉ์
- ์ธ์ ๋ฆฌ์คํธ(Adjacency List) : ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์
๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ์ด๋?
- ๋ชจ๋ ๊ฐ์ ์ด ๋ฐฉํฅ์ฑ์ ๊ฐ์ง์ง ์๋ ๊ทธ๋ํ๋ฅผ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ผ๊ณ ํ๋ค.
- ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ๋ฅผ ๋น๊ฐ์ค์น ๊ทธ๋ํ๋ผ๊ณ ํ๋ค.
- ๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋ ์ฐ๊ฒฐ๋์ด ์๋ ์ํฉ์ ์ธ์ ํ๋ ฌ๋ก ์ถ๋ ฅ ํ ์ ์๋ค.
- ์ธ์ ํ๋ ฌ์ ๋ชจ๋ ์ฐ๊ฒฐ ์ฌ๋ถ๋ฅผ ์ ์ฅํ์ฌ ๐(๐์ ๊ณฑ)์ ๊ณต๊ฐ์ ์๊ตฌํ๋ฏ๋ก ๊ณต๊ฐ ํจ์จ์ฑ์ด ๋จ์ด์ง์ง๋ง ๋ ์ ์ ์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด ๐(1)์ ์๊ฐ์ ์๊ตฌํ๋ค.
main ํจ์
int main(void) {
scanf("%d %d", &n, &m);
for (int i = 0 ; i < m ; i++) {
int x, y;
scanf("%d %d", &x, &y);
// ์๋ก ์ฐ๊ฒฐ์ํด
a[x][y] = 1;
a[y][x] = 1;
}
for (int i = 1; i <= n ; i++) {
for (int j = 1 ; j <= n ; j++) {
printf("%d ", a[i][j]);
}
printf("\\n");
}
return 0;
}
- scanf("%d %d", &n, &m); ๋ &n ๋ ธ๋์ ๊ฐ์, &m ๊ฐ์ ์ ๊ฐ์์ด๋ค.
- ์๋์ ์ฝ๋๊ฐ ์ ์๋ก๋ฅผ ์ฐ๊ฒฐ์ํค๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋ก๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค๊ณ ํ๋ค.
- a[x][y] = 1; a[y][x] = 1;
- ๊ฒฐ๊ณผ ๊ฐ์ ์๋์ ๊ฐ๋ค
- // ์๋ ๊ฐ ์ ๋ ฅ 5 3 1 2 3 4 4 5 // ๊ฒฐ๊ณผ ๊ฐ 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0
๋ง์น๋ฉฐ..
์ญ์๋ ๋ฐฑํ๋ก ์ดํด๋ ๋์ง ์์ผ๋ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ ๋๋ถ์ ์ด๋์ ๋ ์ดํด๋ ํ ์ ์์๋ค.
์ดํด ๋ชปํ ๋ถ๋ถ์ ๋์ค์ ๋ ์ฐพ์๋ด์ผ์ง..