@[Maysoul](/user/409774)
```cpp
if(cnt[eto]>=n)
{
return;
}
```
?
by AkeuchiTsuzuri @ 2023-05-05 16:03:19
@[Maysoul](/user/409774)
```cpp
//2023/5/5
//别着急,先通读一遍题目
//别忘了开long long
//写完先看一遍怎么降复杂度
//要么开全局变量要么给定初值
//想想看,有什么情况需要特判
//std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1e6+10;
const int INF=0x3f3f3f3f;
int num=INF,ans,m,s,t;
int head[11000];
int escnt;
struct linkstar{
int to,from;
int w;
int next;
}edge[11000];
void add(int from,int to,int w)
{
edge[++escnt].from=from;
edge[escnt].to=to;
edge[escnt].w=w;
edge[escnt].next=head[from];
head[from]=escnt;
}
int dis[11000];
bool vis[11000];
int cnt[11000];
queue<int> que;
int n;
void SPFA(int sid)
{
for (int i=1;i<=n;i++)
{
dis[i]=INF;
}
memset(vis,false,sizeof(vis));
dis[sid]=0;
vis[sid]=1;
que.push(sid);
while(!que.empty())
{
int cp=que.front();
que.pop();
vis[cp]=false;
for (int i=head[cp];i!=-1;i=edge[i].next)
{
int eto=edge[i].to;
int ew=edge[i].w;
if(dis[eto]>dis[cp]+ew)
{
dis[eto]=dis[cp]+ew;
cnt[eto]=cnt[cp]+1;
if(!vis[eto])
{
que.push(eto);
vis[eto]=true;
}
}
}
}
}
int d[10000],p;
signed main()
{
memset(head,-1,sizeof(head));
cin>>p;
cin>>n;
cin>>m;
for (int i=1;i<=p;i++)
{
cin>>d[i];
}
for (int i=1;i<=m;i++)
{
int x,y,w;
cin>>x>>y>>w;
add(x,y,w);
add(y,x,w);
}
for (int i=1;i<=n;i++)
{
SPFA(i);
for (int j=1;j<=p;j++)
{
ans+=dis[d[j]];
}
num=min(num,ans);
ans=0;
}
cout<<num<<endl;
return 0;
}
```
by AkeuchiTsuzuri @ 2023-05-05 16:04:21
@[L1rs1ngzN1sLyr](/user/529262) cnt是判负环的忘了重置了(
by Maysoul @ 2023-05-05 16:10:23