๐ก ์ด๋ฒ์๋ ๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ๋ฅผ ๊ตฌํ ํ๋ ๋ฒ์ ๋ฐฐ์๋ณด์๋ค.
๋ฌธ์
๐ก ๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ๋ฅผ ๊ตฌํํ์์ค.
๋น์ฐํ ์๋ ๋ฌธ์ ๊ธฐ์ ๋์ถฉ ๋ด๊ฐ ๋ง๋ค์๋ค.
ํด๋ต
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int index;
int distance;
struct Node *next;
} Node;
void addFront(Node *root, int index, int distance) {
Node *node = (Node*) malloc(sizeof(Node));
node->index = index;
node->distance = distance;
node->next = root->next;
root->next = node;
}
void showAll(Node *root) {
Node *cur = root->next;
while (cur != NULL) {
printf("%d(๊ฑฐ๋ฆฌ: %d) ", cur->index, cur->distance);
cur = cur->next;
}
}
int main(void) {
int n, m;
scanf("%d %d", &n, &m);
Node** a = (Node**) malloc(sizeof(Node*) * (n + 1));
for (int i = 1 ; i <= n ; i++) {
a[i] = (Node*) malloc(sizeof(Node));
a[i]->next = NULL;
}
for (int i = 0 ; i < m ; i++) {
int x, y, distance;
scanf("%d %d %d", &x, &y, &distance);
addFront(a[x], y, distance);
}
for (int i = 1 ; i <= n ; i++) {
printf("์์ [%d] : ", i);
showAll(a[i]);
printf("\\n");
}
return 0;
}
์ค๋ช
๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ์ ์ธ์ ๋ฆฌ์คํธ๋?
- ๋ชจ๋ ๊ฐ์ ์ด ๋ฐฉํฅ์ ๊ฐ์ง๋ ๊ทธ๋ํ๋ฅผ ๋ฐฉํฅ ๊ทธ๋ํ์ด๋ค.
- ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ๋ฅผ ๊ฐ์ค์น ๊ทธ๋ํ๋ผ๊ณ ํ๋ค.
- ๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋ ์ฐ๊ฒฐ๋์ด ์๋ ์ํฉ์ ์ธ์ ๋ฆฌ์คํธ๋ก ์ถ๋ ฅ ํ ์ ์๋ค.
- ์ธ์ ๋ฆฌ์คํธ๋ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ์ ๋ณด๋ง์ ์ ์ฅํ์ฌ ๐(๐ธ)์ ๊ณต๊ฐ์ ์๊ตฌํ๋ฏ๋ก ๊ณต๊ฐ ํจ์จ์ฑ์ด ์ฐ์ํ์ง๋ง ๋ ์ ์ ์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด ๐(๐)์ ์๊ฐ์ ์๊ตฌํ๋ค.
Node ์ด๊ธฐํ
typedef struct Node {
int index; // ์ด๋ ํ ์์น
int distance; // ์ด๋ ํ ๊ฐ์ค์น
struct Node *next;
} Node;
addFront ํจ์
void addFront(Node *root, int index, int distance) {
Node *node = (Node*) malloc(sizeof(Node));
node->index = index;
node->distance = distance;
node->next = root->next;
root->next = node;
}
์ฐจ๋ก๋๋ก ์ฐ๊ฒฐ๋๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ก ๋ง๋ค์ด ์ค๋ค.
main ํจ์
int main(void) {
int n, m;
scanf("%d %d", &n, &m);
Node** a = (Node**) malloc(sizeof(Node*) * (n + 1)); // ๊ฐ ์ธ๋ฑ์ค๊ฐ 1๋ถํฐ ์ถ๋ฐํ๋ค๊ณ ๊ฐ์
for (int i = 1 ; i <= n ; i++) {
a[i] = (Node*) malloc(sizeof(Node));
a[i]->next = NULL; // ๋ฃจํธ๊ฐ ๋ชจ๋ NULL๊ฐ์ ๊ฐ๋ฆฌํฌ ์ ์๊ฒ ํ๋ค.
}
for (int i = 0 ; i < m ; i++) {
int x, y, distance;
scanf("%d %d %d", &x, &y, &distance);
addFront(a[x], y, distance);
}
for (int i = 1 ; i <= n ; i++) {
printf("์์ [%d] : ", i);
showAll(a[i]);
printf("\\n");
}
return 0;
}
๊ฒฐ๊ณผ๊ฐ์ ์๋์ ๊ฐ๋ค.
// ์๋ ๊ฐ ์
๋ ฅ
5 4
1 2 9
1 3 8
1 5 10
3 4 8
// ๊ฒฐ๊ณผ๊ฐ
์์ [1] : 5(๊ฑฐ๋ฆฌ : 10) 3(๊ฑฐ๋ฆฌ : 8) 2(๊ฑฐ๋ฆฌ : 9)
์์ [2] :
์์ [3] : 4(๊ฑฐ๋ฆฌ : 8)
์์ [4] :
์์ [5] :
๋ง์น๋ฉฐ..
๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๋ณด๋ค๋ ์กฐ๊ธ ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ง ๋์ค๋ฉด ์์์ง๋ ๋…