플로이드-워셜 문제
#include <iostream>
using namespace std;
int G[101][101];
int N;
void input(){
cin >> N;
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++){
int k;
cin >> k;
G[i][j] = k;
}
}
}
void floyd(){
for(int k = 1; k <= N; k++){
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++){
if(G[i][k] == 1 && G[k][j] == 1){
G[i][j] = 1;
}
}
}
}
}
void print_(){
for(int i = 1; i <= N; i++){
for(int j = 1; j <= N; j++){
cout << G[i][j] << " ";
}
cout << "\n";
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
input();
floyd();
print_();
return 0;
}
