社区讨论
求助
P14923[GESP202512 八级] 猫和老鼠参与者 2已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mkl6h2aq
- 此快照首次捕获于
- 2026/01/19 21:05 上个月
- 此快照最后确认于
- 2026/01/23 17:15 4 周前
求助,代码是冲着40分写的,但只得了10分,样例都对了,我也尝试调试过了
CPP#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int c[100005];
vector<pair<int,int> > v[100005];
long long dis[100005];
int vis[100005];
void dij(int n,int s)
{
for(int i=1;i<=100004;i++)dis[i]=1e9;
memset(vis,0,sizeof vis);
dis[s]=0;
for(int i=1;i<=n-1;i++)
{
int mini=-1,minn=1e9;
for(int j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]<minn)
{
minn=dis[j];
mini=j;
}
}
vis[mini]=1;
for(int j=0;j<v[mini].size();j++)
{
if(dis[v[mini][j].first]>dis[mini]+v[mini][j].second)
{
dis[v[mini][j].first]=dis[mini]+v[mini][j].second;
}
}
}
}
signed main()
{
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int n,m;
cin>>n>>m;
int a,b;
cin>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>c[i];
}
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
v[x].push_back({y,z});
v[y].push_back({x,z});
}
dij(n,b);
long long ans=0;
for(int i=1;i<=n;i++)
{
if(dis[i]<dis[a])ans+=c[i];
}
cout<<ans;
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...