为什么一定要加第63行的那句if??都已经inf,还会更新min吗?
查看原帖
为什么一定要加第63行的那句if??都已经inf,还会更新min吗?
819682
Exile_Code楼主2023/11/4 17:25
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>
#include <stack>
#include <unordered_set>


#define ull				unsigned long long 
#define ll				long long
#define pii				pair<ll ,ll>
#define fi				first
#define se				second
#define pr				pair
#define cy				cout<<"Yes"<<endl
#define cn				cout<<"No"<<endl
#define forn(i,n)		for(int (i)=0;(i)<(n);(i)++)   
#define forne(i,n)		for(int (i)=1;(i)<=(n);(i)++)
#define rforn(i,n)		for(int (i)=(n-1);(i)>=(0);(i)--)   
#define rforne(i,n)		for(int (i)=(n);(i)>=(1);(i)--)
#define sorta(a)		sort((a).begin(),(a).end())
#define sortcmp(a,cmp)	sort((a).begin(),(a).end(),cmp)
#define v				vector


const int inf = 1e9;
const int N = 2e5 + 5;
ll t;

void solve() {

	int n, m; cin >> n >> m;
	ll d[1505][1505];

	forne(i, n)
		forne(j, n)
		if (i == j)
			d[i][j] = 0;
		else
			d[i][j] = inf;
	//memset(d, 0x4f4f4f4f, sizeof(d));
	forn(i, m) {
		ll a, b, c;
		cin >> a >> b >> c;
		d[a][b] = min(d[a][b], -c);
	}
	forne(k, n) {
		forne(i, n) {
			forne(j, n) {	
			//	if(d[i][k]!=inf&&d[k][j]!=inf)
				d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
			}
		}
	}
	if (d[1][n] == inf)
		cout << -1 << endl;
	else
		cout << -d[1][n] << endl;
}
int main() {

	//cin >> t;
	t = 1;
	while (t--)
		solve();

	return 0;
}





2023/11/4 17:25
加载中...