0
陶旭杰
中级光能
中级光能
//90分错误代码
#include<bits/stdc++.h>
#define MAXN 105
#define INF 2000000000000
using namespace std;
struct edge{
long long adj,w;
};
queue<long long> q;
vector<edge> g[MAXN];
long long n,dis[MAXN];
bool exist[MAXN];
void SPFA(long long s){
for(int i=1;i<=n;i++)
dis[i]=INF;
dis[s]=0;
q.push(s);
exist[s]=true;
while(!q.empty()){
int idx=q.front();
q.pop();
exist[idx]=false;
for(int i=0;i<g[idx].size();i++){
edge e=g[idx][i];
if(dis[e.adj]>dis[idx]+e.w){
dis[e.adj]=dis[idx]+e.w;
if(!exist[e.adj]){
exist[e.adj]=true;
q.push(e.adj);
}
}
}
}
}
int main(){
cin>>n;
int st;
cin>>st;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
string s;
stringstream ss;
cin>>s;
ss<<s;
int x;
if(ss>>x){
g[i].push_back((edge){j,x});
}
}
}
SPFA(st);
for(int i=1;i<=n;i++){
if(st!=i){
printf("(%.d -> %.d) = %.d\n",st,i,dis[i]);
}
}
return 0;
}
刚学图论的小蒟蒻,恳请各位大佬能指点出我哪里错了,谢谢
陶旭杰在2020-07-26 12:16:54追加了内容
@酷町喵~o( =∩ω∩= )o~ @张睿杰 @葛新 求解丫!