Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //author : ainunsy1
- #include <bits/stdc++.h>
- #define forn(i,a,b) for(int i=a; i<=b; i++)
- #define ford(i,a,b) for(int i=a; i>=b; i--)
- #define fi first
- #define se second
- using namespace std;
- typedef long long ll;
- const int MX=5e3+5;
- ll n,m,dist[MX],vis[MX];
- vector<tuple<ll,ll,ll>>v;
- vector<ll> adj[MX];
- void dfs(int i){
- vis[i]=1;
- for(auto j:adj[i])
- if(!vis[j])
- dfs(j);
- }
- void solve(){
- dist[1]=0;
- cin>>n>>m;
- forn(i,2,n)
- dist[i]=LLONG_MIN;
- forn(i,1,m){
- ll a,b,w;
- cin>>a>>b>>w;
- adj[a].push_back(b);
- v.push_back({a,b,w});
- }
- forn(i,1,m){
- for(auto [a,b,w]:v){
- if(dist[a]!=LLONG_MIN && dist[b]<dist[a]+w)
- dist[b]=dist[a]+w;
- }
- }
- bool ada=false,gaada=true;
- for(auto [a,b,w]:v){
- if(dist[a]!=LLONG_MIN && dist[b]<dist[a]+w){
- memset(vis,0,sizeof(vis));
- dfs(a);
- ada|=(!vis[n]);
- gaada&=(vis[n]);
- }
- }
- if(ada || gaada)
- cout<<dist[n]<<"\n";
- else
- cout<<"-1\n";
- }
- int main(){
- ios::sync_with_stdio(0); cin.tie(0);
- int tc=1;
- // cin>>tc;
- forn(i,1,tc){
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement