社区讨论
求助,刚学图论,Dij 7WA 3MLE
P3371【模板】单源最短路径(弱化版)参与者 5已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @locemxxo
- 此快照首次捕获于
- 2023/10/30 12:33 2 年前
- 此快照最后确认于
- 2023/11/05 00:13 2 年前
还没学
CPPvector来搞最短路,用的邻接矩阵,不知道为啥WA o(TヘTo)#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
ll val[1001][1001];
ll dis[1001],vis[1001];
#define inf ll(1<<30)*2-1 // 2147483647
ll n,m,s;
void init(){
for(ll i=1;i<=n;i++){for(ll j=1;j<=n;j++){if(i==j)val[i][j]=0;else val[i][j]=inf;}}
}
void input(){
while(m--){
ll u,v,w;
cin>>u>>v>>w;
val[u][v]=w;
}
}
void dijkstra(){
vis[s]=1;
for(ll i=1;i<=n;i++)dis[i]=val[s][i];
ll k;
for(ll i=1;i<n;i++){
ll nmin=inf;
for(ll j=1;j<=n;j++){
if(!vis[j] and nmin>dis[j]){nmin=dis[j];k=j;}
}
vis[k]=1;
for(ll j=1;j<=n;j++){
if(!vis[j] and dis[j]>dis[k]+val[k][j])dis[j]=dis[k]+val[k][j];
}
}
}
int main(){
cin>>n>>m;
cin>>s;
init();
input();
dijkstra();
for(ll i=1;i<=n;i++)cout<<dis[i]<<" ";
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...