只对了第二点但是样例过了(神牜帮帮我啊啊啊啊)
查看原帖
只对了第二点但是样例过了(神牜帮帮我啊啊啊啊)
735141
hiGh_sPeEd楼主2024/4/27 11:06
#include<bits/stdc++.h>
using namespace std;
const int maxn=4000;
int g[maxn],n,m,d[1001][1001],p,dis[maxn],vis[maxn];
void dijkstra(int s){
    for(int i=1;i<=n;i++)dis[i]=100000001;
    memset(vis,0,sizeof vis);
    int u;
    int minn=0x3f3f;
    for(int i=1;i<=n;i++)
        dis[i]=d[s][i];
    vis[s]=1;
    dis[s]=0;
    for(int j=1;j<=n;j++)
        if(!vis[j]&&dis[j]<minn)
            minn=dis[j],u=j;
    vis[u]=1;
    for(int j=1;j<=n;j++)
        if(dis[j]>dis[u]+d[u][j]&&!vis[j])
            dis[j]=dis[u]+d[u][j];
}
int main(){
    cin>>p>>n>>m;
    memset(d,0x3f,sizeof d);
    for(int i=1;i<=p;i++)cin>>g[i];
    for(int i=1;i<=m;i++){
        int x,y,z;
        cin>>x>>y>>z;
        d[x][y]=d[y][x]=z;
    }
    int minn=100000001;
    for(int i=1;i<=n;i++){
        dijkstra(i);
        int t=0;
        for(int j=1;j<=p;j++)
        	t+=dis[g[j]];
        	minn=min(minn,t);
    }
    cout<<minn;
    return 0;
}

满分不了但是应该不至于十分吧。。。。

啊啊啊啊啊啊啊帮帮我啊啊啊啊啊啊啊啊啊

神牜祝你长十厘米(●ˇ∀ˇ●)

2024/4/27 11:06
加载中...