[BOJ] 10159. 저울 [플로이드-와샬] - c++

ha·2022년 2월 8일
0

BOJ

목록 보기
20/28

https://www.acmicpc.net/problem/10159

c++ 플로이드-와샬 풀이

a->b , b->c 이면 a->c이다
플로이드 와샬 = 3중 for문( 중간점, 시작점, 끝점 순서 )

#include <iostream>
#include <string>
using namespace std;

int N,M;
int p[101][101];

int main() {
    cin>>N>>M;
    
    for(int i=0;i<M;i++)
    {
        int a,b;
        cin>> a>>b;
        p[a][b]=1;
    }
    
    for(int j=1;j<=N;j++){
        for(int i=1;i<=N;i++){
            for(int k=1;k<=N;k++){
                if(p[i][j]==1&&p[j][k]==1) p[i][k]=1;
            }
        }
    }
    
    for(int i=1;i<=N;i++){
        int cnt =0;
        for(int j=1;j<=N;j++){
            if(j==i) continue;
            if(p[i][j]==0 && p[j][i]==0) cnt++;
        }
        cout<<cnt<<"\n";
    }
}

0개의 댓글