蒟蒻求救!
  • 板块P1807 最长路
  • 楼主haiming
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/17 07:24
  • 上次更新2023/11/2 13:20:18
查看原帖
蒟蒻求救!
303105
haiming楼主2023/10/17 07:24
#include<bits/stdc++.h>
using namespace std;
int n,m,i,x,y,z,j,k,a[2000][2000],f[2000],b[2000];
int main(){
//	freopen("path.in","r",stdin);
//	freopen("path.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			a[i][j]=1;
	for(i=1;i<=m;i++){
		scanf("%d%d%d",&x,&y,&z);
		a[y][x]=a[x][y]=min(a[x][y],-z);
	}
	f[1]=1;
	for(i=2;i<=n;i++)b[i]=a[1][i];
	for(i=1;i<n;i++){
		x=2e9;
		for(j=1;j<=n;j++)
			if(!f[j]&&b[j]<x){k=j;x=b[j];}
		f[k]=1;
		for(j=1;j<=n;j++)
			if(!f[j]&&b[k]+a[k][j]<b[j]) 
				b[j]=b[k]+a[k][j];
	}
	printf("%d",-1*b[n]);
	return 0;
}

对了4个点,其他都是错误答案

2023/10/17 07:24
加载中...