#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'; } } |
English