问题标题: 酷町堂:1275 最短路径(WA 90分)

0
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~ @张睿杰 @葛新 求解丫!


1
汤恩语
汤恩语
初级守护
初级守护

第二行改成:

#define INF 2000000000000LL

 

0
胡家翊
胡家翊
高级守护
高级守护

同学,图论第一保命要素,long long啊,兄弟

0
0
0
朱优扬
朱优扬
中级天翼
中级天翼

what!!!???宏定义?(我还没学)

0
汪恺恒
汪恺恒
中级启示者
中级启示者

最短路径算法(floyed)

0
0
0
0
0
费唐儒
费唐儒
初级守护
初级守护

long long!!!!!

int 不够!!!!  !

结果保证在64位二进制整型范围内。

0
周琪岳
周琪岳
资深光能
资深光能

动态规划

实在不会来个DFS

0
王俊杰
王俊杰
高级光能
高级光能

用long long,初值赋大一点。

0
0
0
0
0
黄子扬
黄子扬
初级天翼
初级天翼

十年OI一场空,不开________见祖宗

我要回答