#include <bits/stdc++.h> using namespace std; int dis[402][402]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) { int n; cin >> n; vector <pair<int,int>> ls; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { char a; cin >> a; if(a == '1') dis[i][j] = 1; else { dis[i][j] = 1e9; if(i < j) ls.push_back({i,j}); } } dis[i][i]=0; } for(int i=1; i<=n; i++) for(int k=1; k<=n; k++) for(int j=1; j<=n; j++) dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j]); int ret = 0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) ret = max(ret, dis[i][j]); for(auto pab : ls) { int a = pab.first, b = pab.second, act=0; for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) act = max(act, min({dis[i][j], dis[i][a]+1+dis[b][j], dis[i][b]+1+dis[a][j]})); if(act < ret) ret = act; } cout << ret << '\n'; } }
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 | #include <bits/stdc++.h> using namespace std; int dis[402][402]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) { int n; cin >> n; vector <pair<int,int>> ls; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { char a; cin >> a; if(a == '1') dis[i][j] = 1; else { dis[i][j] = 1e9; if(i < j) ls.push_back({i,j}); } } dis[i][i]=0; } for(int i=1; i<=n; i++) for(int k=1; k<=n; k++) for(int j=1; j<=n; j++) dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j]); int ret = 0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) ret = max(ret, dis[i][j]); for(auto pab : ls) { int a = pab.first, b = pab.second, act=0; for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) act = max(act, min({dis[i][j], dis[i][a]+1+dis[b][j], dis[i][b]+1+dis[a][j]})); if(act < ret) ret = act; } cout << ret << '\n'; } } |