반응형
    
    
    
  | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | //가장 많이 연결되어 있는 간선을 가지고 있는 점을 찾아야 한다. #include <iostream> #include <queue> #include <vector> #include <algorithm> using namespace std; int n, m,u,v,c[10001],d[10001];//각 정점에 연결된 간선의 개수가 몇인지 저장하는 vector <int> a[10001]; vector <int> p(10001);//가장 많은 간전을 가지고 있는 점을 저장함 void BFS(int x) {     queue <int> q;     q.push(x);     while (!q.empty())     {         int x = q.front();         q.pop();         c[x] = 1;         for (int i = 0; i < a[x].size(); i++)         {             int y = a[x][i];             if (c[y] == 0)             {                 q.push(y);                 c[y] = 1;                 d[y]++;             }         }     } } int main() {     int big = 0,k=1;     cin >> n >> m;     while (m--)     {         cin >> u >> v;         a[u].push_back(v);//단방향 그래프이기 때문     }     for (int i = 1; i <= n; i++)     {         for (int i = 1; i <= n; i++)             c[i] = 0;//체크한 정점 초기화         BFS(i);//단방향이므로 모든 정점에 대해서 BFS필요     }     for (int i = 1; i <= n; i++)         if (d[i] > big)//가장 많은 간전을 저장한 수를 저장             big = d[i];     for (int i = 1; i <= n; i++)     {         if (big == d[i])         {             p[k++] = i;//big과 같은 점을 저장         }     }     sort(p.begin(), p.begin() + n);//점을 정렬     for (int i = 1; i <= n; i++)//오른차순으로 출력         if(p[i]!=0)             cout << p[i] << ' '; } | cs | 
'Algorithm' 카테고리의 다른 글
| C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9316번:Hello Judge 답 (0) | 2017.03.10 | 
|---|---|
| C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1325번:효율적인 해킹(DFS) 답 (0) | 2017.03.09 | 
| C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1786번:찾기 답 (1) | 2017.03.09 | 
| C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2133번:타일채우기 답 (0) | 2017.03.09 | 
| C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1547번:공 답 (0) | 2017.03.08 |