Submission #1145187

#TimeUsernameProblemLanguageResultExecution timeMemory
1145187why1Commuter Pass (JOI18_commuter_pass)C++20
24 / 100
148 ms327680 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<int,int> #define sz size() #define all(v) v.begin(),v.end() #define fi first #define se second const int N = 5e5; const int mod = 1e9+7; const ll INF = 1e18; const int di[] = {1, -1, 0, 0}; const int dj[] = {0, 0, 1, -1}; vector<int> g[N+1]; void solve() { int n,m; cin>>n>>m; int s,t,U,V; cin>>s>>t>>U>>V; ll a[n+1][n+1]; memset(a,0,sizeof(a)); for(int i = 1; i <= m; i++){ int x,y,c; cin>>x>>y>>c; a[x][y]=c; a[y][x]=c; } ll d[n+1][n+1]; for(int i = 0; i <= n; i++){ for(int j = 0; j <= n; j++){ if(a[i][j]!=0) d[i][j]=a[i][j]; else d[i][j]=INF; } d[i][i]=0; } for(int k = 1; k <= n; k++){ for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ d[i][j]=min(d[i][j],d[i][k]+d[k][j]); } } } ll ans=d[U][V]; for(int x = 1; x <= n; x++){ for(int y = 1; y <= n; y++){ ll c=d[s][x]+d[x][y]+d[y][t]; if(d[s][t]==c){ ans=min(ans,d[x][U]+d[y][V]); ans=min(ans,d[y][U]+d[x][V]); } } } cout<<ans<<"\n"; } int main() { //freopen("cowrun.in","r",stdin); //freopen("cowrun.out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t=1; //cin>>t; while(t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...