<div><br></div> <div><br></div> <div>교수님이 단절선을 C로 짜오는 과제를 내주셨단 말이야?</div> <div><br></div> <div>근데 구글링 해보니깐 c++ 코드 밖에 없는겨</div> <div><br></div> <div>c로 고쳐볼라고 했는데, c++ 하나도 몰름 허미;;</div> <div><br></div> <div>혹시 여기다가 소스코드 올리고 고쳐 달라고 하면 개에바참치꽁치겠지?</div> <div><br></div> <div>으아ㅏㅏㅏㅏㅏㅏ 뒤지겄다 진짜ㅋㅋㅋㅋㅋ</div> <div><br></div> <div>누가 근데 지식인에 나랑 같은걸 물어 보더라구</div> <div><br></div> <div>그래서 답변 올라온걸 돌려봤는데 #include<stdbool.h> 가 </div> <div><br></div> <div>fatal error C1083: 포함 파일을 열 수 없습니다. 'stdbool.h': No such file or directory</div> <div><br></div> <div>오류뜸ㅋㅋㅋ</div> <div><br></div> <div>아래가 코드인데 어디가 문제일까?</div> <div><br></div> <div> <div>#include <stdio.h></div> <div>#include <stdbool.h></div> <div> </div> <div>#define MAXV 100010</div> <div>#define MAXBUF 1000</div> <div> </div> <div>typedef struct pair</div> <div>{</div> <div> int first, second;</div> <div>} pair;</div> <div>pair make_pair(int f, int s);</div> <div> </div> <div>typedef struct vector</div> <div>{</div> <div> int size;</div> <div> int buf[MAXBUF];</div> <div>} vector;</div> <div>void v_push_back(vector* v, int val);</div> <div> </div> <div>int V, E, counter = 0, discovered[MAXV];</div> <div>bool isCutVertex[MAXV];</div> <div>vector graph[MAXV];</div> <div>pair edge[MAXBUF];</div> <div> </div> <div>int edge_size = 0;</div> <div>void edge_push_back(pair p);</div> <div>void edge_sort();</div> <div>int min(int a, int b);</div> <div>int max(int a, int b);</div> <div> </div> <div>int dfs(int A, int parent) </div> <div>{</div> <div> discovered[A] = ++counter;</div> <div> int ret = discovered[A];</div> <div><br></div> <div> for (int i = 0; i < graph[A].size; i++) </div> <div><span style="white-space:pre;"> </span>{</div> <div> int next = graph[A].buf[i];</div> <div> if (next == parent)</div> <div> continue;</div> <div><br></div> <div> if (!discovered[next]) </div> <div><span style="white-space:pre;"> </span>{</div> <div> int low = dfs(next, A);</div> <div> if (low > discovered[A]) </div> <div><span style="white-space:pre;"> </span>{</div> <div> edge_push_back(make_pair(min(A, next), max(A, next)));</div> <div> }</div> <div> ret = min(ret, low);</div> <div> }</div> <div> else </div> <div><span style="white-space:pre;"> </span>{</div> <div> ret = min(ret, discovered[next]);</div> <div> }</div> <div> }</div> <div> return ret;</div> <div>}</div> <div> </div> <div>int main() {</div> <div> printf("정점의 수 입력 : ");</div> <div> scanf_s("%d", &V);</div> <div> printf("간선의 수 입력 : ");</div> <div> scanf_s("%d", &E);</div> <div> </div> <div> for (int i = 1; i <= E; i++) {</div> <div> int a, b;</div> <div> scanf_s("%d %d", &a, &b);</div> <div> v_push_back(&graph[a], b);</div> <div> v_push_back(&graph[b], a);</div> <div> }</div> <div> dfs(1, 0);</div> <div> edge_sort();</div> <div> printf("단절선 갯수는 %d 입니다.\n", edge_size);</div> <div> for (int i = 0; i < edge_size; i++)</div> <div> printf("%d %d\n", edge[i].first, edge[i].second);</div> <div> return 0;</div> <div>}</div> <div> </div> <div>pair make_pair(int f, int s)</div> <div>{</div> <div> pair p;</div> <div> p.first = f;</div> <div> p.second = s;</div> <div> return p;</div> <div>}</div> <div> </div> <div>void v_push_back(vector* v, int val)</div> <div>{</div> <div> v->buf[v->size] = val;</div> <div> ++v->size;</div> <div>}</div> <div> </div> <div>void edge_push_back(pair p)</div> <div>{</div> <div> edge[edge_size] = p;</div> <div> ++edge_size;</div> <div>}</div> <div> </div> <div>int pair_cmp(pair* a, pair* b)</div> <div>{</div> <div> if (a->first < b->first) return -1;</div> <div> if (a->first > b->first) return 1;</div> <div> </div> <div> if (a->second < b->second) return -1;</div> <div> if (a->second > b->second) return 1;</div> <div> </div> <div> return 0;</div> <div>}</div> <div> </div> <div>void edge_sort()</div> <div>{</div> <div> pair tmp;</div> <div> for (int a = 0; a < edge_size - 1; ++a)</div> <div> for (int b = a + 1; b < edge_size; ++b)</div> <div> if (pair_cmp(&edge[a], &edge[b]) < 0)</div> <div> {</div> <div> tmp = edge[a];</div> <div> edge[a] = edge[b];</div> <div> edge[b] = tmp;</div> <div> }</div> <div>}</div> <div> </div> <div>int min(int a, int b)</div> <div>{</div> <div> return a < b ? a : b;</div> <div>}</div> <div> </div> <div>int max(int a, int b)</div> <div>{</div> <div> return a > b ? a : b;</div> <div>}</div></div>