黄题Floyd模板题求助qwq
  • 板块学术版
  • 楼主陌屿
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/19 20:33
  • 上次更新2023/11/4 10:00:16
查看原帖
黄题Floyd模板题求助qwq
184837
陌屿楼主2021/8/19 20:33

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int n,u,v;
int minn=99999999,w[105],sum;
int f[105][105];
int main(){
    scanf("%d",&n);
    memset(f,127,sizeof(f));
    for(int i=1;i<=n;i++){
        f[i][i]=0;
        scanf("%d%d%d",&w[i],&u,&v);
        if(u!=0) f[u][i]=f[i][u]=1;
        if(v!=0) f[v][i]=f[i][v]=1;
    }

    /*for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            cout<<f[i][j]<<" ";
        cout<<endl;
    }*/
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            if(i!=k)
                for(int j=1;j<=n;j++){
                    //printf("qwqwqwq:%lld%lld\n",f[i][j],f[i][k]+f[k][j]);
                    if(i!=j&&k!=j&&f[i][k]+f[k][j]<f[i][j])
                        f[i][j]=f[i][k]+f[k][j];
                }
    for(int i=1;i<n;i++){
        sum=0;
        for(int j=1;j<=n;j++)
            sum+=f[i][j]*w[j];
        minn=min(minn,sum);
    }
    printf("%d",minn);
}```
2021/8/19 20:33
加载中...