Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
150275 冼俊烨 香甜的黄油 C++ 编译错误 0 0 MS 0 KB 1370 2024-06-01 17:40:48

Tests(0/0):


#include<bits/stdc++.h> using namespace std; const int maxn=30000+10; int g[maxn],n,m,d[maxn],to[maxn],cnt,first[maxn],p1,p[maxn],next[maxn]; int w[maxn],dis[maxn]; queue<int>q; void add(int u,int v,int l){ ++cnt; to[cnt]=v; next[cnt]=first[u]; first[u]=cnt; w[cnt]=l; } void spfa(int s){ memset(p,0,sizeof(p)); for(int i=1;i<=n;i++)d[i]=10000; d[s]=0; q.push(s);p[s]=1; while(!q.empty()){ int u=q.front(); q.pop(); p[u]=0; for(int i=first[u];i;i=next[i]){ int v=to[i]; if(d[v]>d[u]+w[i]){ d[v]=d[u]+w[i]; // cout<<v<<" "<<d[v]<<endl; if(!p[v]){ q.push(v); p[v]=1; } } } } } int main(){ cin>>p1>>n>>m; for(int i=1;i<=p1;i++) scanf("%d",&g[i]); for(int i=1;i<=m;i++){ int x,y,z; cin>>x>>y>>z; add(x,y,z); add(y,x,z); } int minn=100000000; for(int i=1;i<=n;i++){//和SPFA模板不一样的就是需要对每个点进行SPFA spfa(i); int ans=0; for(int j=1;j<=p1;j++) ans+=d[g[j]]; minn=min(minn,ans); // cout<<ans<<endl; } cout<<minn<<endl; return 0;//完结散花 }


测评信息: