给N个点 ,每个点每秒向四周扩散,问他们什么时候能全部联通
题解 floyd 一下这N个点的距离
距离最大的两个点即为答案
代码
#include<bits/stdc++.h> using namespace std; int n,maxx; int x[55],y[55]; int g[55][55]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>x[i]>>y[i]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=abs(x[i]-x[j])+abs(y[i]-y[j]); for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=min(max(g[i][k],g[k][j]),g[i][j]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) maxx=max(maxx,g[i][j]); cout<<((maxx+1)>>1); return 0; }