求助为何输出样例错误
查看原帖
求助为何输出样例错误
756179
so_find_skind楼主2023/9/27 18:22
#include<bits/stdc++.h>
using namespace std;
int n;
int x[155],y[155];
long long dis[155][155];
bool g[155][155];
bool found[155];
long long shit(int i,int j){
    return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))*1000000;
}
string t;
void dij(int st){
    dis[st][st]=0;
    memset(found,false,sizeof(found));
    while(true){
        int u=-1;
        for(int i=1;i<=n;i++){
            if(!found[i] && (u==-1 || dis[st][i]<dis[st][u]))
                u=i;
        }
        if(u==-1)
            break;
        found[u]=true;
        for(int i=1;i<=n;i++){
            if(g[u][i] && dis[st][i]>dis[st][u]+shit(i,u)){
                dis[st][i]=dis[st][u]+shit(i,u);
            }
        }
    }
}
int main(){
    memset(dis,0x3f,sizeof(dis));
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>x[i]>>y[i];
    for(int i=1;i<=n;i++){
        cin>>t;
        for(int j=0;j<t.size();j++)
            g[i][j+1]=t[j]-'0';
    }
    for(int i=1;i<=n;i++)
        dij(i);
    long long ans=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(dis[i][j]!=0x3f3f3f3f3f3f3f3f)
                ans=max(ans,dis[i][j]);
        }
    }
    cout<<ans;
    return 0;
}
2023/9/27 18:22
加载中...