#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx=2e2+5, mx=5e4+5;
ll n, m, u[mx], v[mx], dp[nx][nx], res=1e18, c[mx], d[mx];
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>m;
for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) if (i!=j) dp[i][j]=1e18;
for (int i=1; i<=m; i++) cin>>u[i]>>v[i]>>c[i]>>d[i], dp[u[i]][v[i]]=min(dp[u[i]][v[i]], c[i]);
for (int k=1; k<=n; k++) for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) dp[i][j]=min(dp[i][j], dp[i][k]+dp[k][j]);
res=min(res, dp[1][n]+dp[n][1]);
for (int i=1; i<=m; i++) res=min({res, dp[1][v[i]]+c[i]+dp[u[i]][n]+dp[n][1]+d[i], dp[1][n]+dp[n][v[i]]+c[i]+d[i]+dp[u[i]][1]});
if (res==1e18) cout<<-1;
else cout<<res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |