89分 第七个点wa
查看原帖
89分 第七个点wa
428690
Astatinear楼主2021/6/7 19:22

floyed算法 求最短路 帮忙看一下 哪里有问题

#include<iostream>
#include<cstring>
using namespace std;
char a,b;
int c;
int vis[1005][1005];
int bj[1005];
int ans=0x3f3f3f3f;
char cow;
int minn=0x3f3f3f3f,maxx;
int n;
void judge(char a)
{
    if(a>='A'&&a<'Z')
    {
        bj[int(a)]=1;
    }
}
int main()
{
    cin>>n;
    memset(vis,0x3f,sizeof(vis));
    for(int i=1;i<=n;++i)
    {
        cin>>a>>b>>c;
        vis[int(a)][int(b)]=c;
        vis[int(b)][int(a)]=c;
        minn=min(int(a),min(int(b),minn));
        maxx=max(int(a),max(int(a),maxx));
        judge(a);
    }
    for(int k=minn;k<=maxx;++k)
    {
        for(int i=minn;i<=maxx;++i)
        {
            for(int j=minn;j<=maxx;++j)
            {
                if(i!=k&&j!=k&&i!=j)
                vis[i][j]=min(vis[i][k]+vis[k][j],vis[i][j]);
            }
        }
    }
    for(int i=minn;i<=maxx;++i)
    {
        if(bj[i]==1&&vis[i][int('Z')]<ans)
        ans=vis[i][int('Z')],cow=char(i);
    }
    cout<<cow<<" "<<ans<<endl;
    return 0;
}
2021/6/7 19:22
加载中...