ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상근이의 여행
    백준알고리즘 2019. 9. 8. 15:12

    #include<iostream>
    #include <queue>
    #include <utility>
    #include<cstring>
    #include<cstdlib>
    
    using namespace std;
    
    int tc,n,m;
    int map[1001][1001];
    int d[1001][1001];
    bool nation[1001];
    int ans = 123456789;
    
    bool check(){
        for(int i = 1; i <= n; i++){
            if(nation[i] == false)
                return false;
        }
        return true;
    }
    
    void bfs(int x, int y)
    {
        queue<pair<int,int>> q;
        q.push({x,y});
        nation[x] = true;
        while(!q.empty()){
            x = q.front().first; y = q.front().second;
            q.pop();
            for(int i = 1; i <= n; i++){
                if(map[y][i] == 1 && d[y][i] == 0 && nation[i] == false){
                    d[y][i] = d[x][y] + 1;
                    nation[i] = true;
                    q.push({y,i});
                    break;
                }
            }
            if(ans > d[x][y]) return;
            if(q.empty()){
                ans = ans > d[x][y] ? d[x][y] : ans;
            }
        }
    }
    
    int main(){
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
    
        cin>>tc;
        for(int t = 0; t< tc; t++){
            ans = 123456789;
            cin>>n>>m;
            int a,b;
            for(int i = 0; i < m; i++){
                cin>>a>>b;
                map[a][b] = 1;
                map[b][a] = 1;
            }
            /*for(int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    cout << map[i][j] << " ";
                }
                cout << endl;
            }cout<<endl;*/
    
            /*for(int i = 1; i <= n; i++){
                for(int j = 1; j <= n; j++){
                    if(map[i][j] == 1){
                        d[i][j] = true;
                        bfs(i,j);
                        memset(d,0,sizeof(d));
                        memset(nation,false,sizeof(nation));
                        break;
                    }
                }
            }*/
            cout<<n-1<<'\n';
    
        }
        return 0;
    }

     

    BFS로 풀면서 계속 시간초과가났던문제, 왜그런가 계속문제다시읽고 써보고하면서 느낀건..

    그냥 모든곳을 다돌기위해선 무조건 n-1이여야한다는것이다...

    '백준알고리즘' 카테고리의 다른 글

    효율적인 해킹  (0) 2019.09.09
    쇠막대기  (0) 2019.09.08
    오큰수  (0) 2019.09.08
    스타트와 링크  (0) 2019.09.05
    단어 뒤집기  (0) 2019.09.05

    댓글

Designed by Tistory.