Dijkstra56分求助!
查看原帖
Dijkstra56分求助!
1008513
xiaoshumiao楼主2023/11/6 21:48
#include<cstdio>
using namespace std;
const int MAXN=1505,MIN=-0x3f3f3f3f;
int g[MAXN][MAXN],d[MAXN];
bool vis[MAXN];
void dijkstra(int n) {
  d[0]=MIN;
  for(int i=1;i<=n;i++)
    d[i]=g[1][i];
  vis[1]=true;
  for(int i=1;i<=n;i++) {
  	int k=0;
  	for(int j=1;j<=n;j++) {
  	  if(!vis[j]&&d[j]>d[k])
  	    k=j;
  	}
  	vis[k]=true;
  	for(int j=1;j<=n;j++) {
  	  if(g[k][j]!=MIN&&d[k]+g[k][j]>d[j])
  	  	d[j]=d[k]+g[k][j];
  	}
  }
}
int main() {
  int n,m,from,end,val;
  scanf("%d %d",&n,&m);
  for(int i=1;i<=n;i++) {
  	for(int j=1;j<=n;j++) {
  	  if(i!=j)
  	    g[i][j]=MIN;
  	}
  }
  for(int i=1;i<=m;i++) {
  	scanf("%d %d %d",&from,&end,&val);
  	if(g[from][end]<val)
  	  g[from][end]=val;
  }
  dijkstra(n);
  if(d[n]==MIN)
    printf("-1");
  else
    printf("%d",d[n]);
  return 0;
}

麻烦大佬指正一下哪里错了,悬关。

2023/11/6 21:48
加载中...