Submission #547554

#TimeUsernameProblemLanguageResultExecution timeMemory
547554tmn2005Commuter Pass (JOI18_commuter_pass)C++17
0 / 100
47 ms15700 KiB
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<bits/stdc++.h>

using namespace __gnu_pbds;
using namespace std;
typedef long long ll;

#define fr first
#define sc second

#define mk make_pair
#define pb push_back
#define pob pop_back
#define pf push_front
#define pof pop_front

#define int long long
#define pii pair<int,int>
#define piii pair<int,pii>

#define all(s) s.begin(), s.end()
#define allr(s) s.rbegin(), s.rend()

#define NeedForSpeed ios::sync_with_stdio(0), cin.tie(0)
#define ordered_set tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update>
const int N = 1e5 + 12, INF = 1e18;
int n, m, k, a, b, c, d, s, f, l, r, x, y, z, res = INF, dis[505][505];
vector<pii> g[N];
vector<int> ds(N, INF), df(N, INF), dl(N, INF), dr(N, INF);

void dfs(int s, vector<int> &dis){
	priority_queue<pii> q;
	q.push({0, s});
	dis[s] = 0;
	//tin[s] = 0;
	//g[x].pb({y, z});
	//g[y].pb({x, z});
	//dfs(f, df);
	//dfs(l, dl);
	//dfs(r, dr);
	//dfs(s, ds);
	while(!q.empty()){
		int v = q.top().sc;
		q.pop();
		
		for(auto i : g[v]){
			int to = i.fr, len = i.sc;
			if(dis[v] + len < dis[to]){
				dis[to] = min(dis[to], dis[v] + len);
				q.push({dis[to], to});
				//tin[to] = tin[v] + 1;
			}
		}
	}
}
void solve(){
	memset(dis, 63, sizeof dis);
	cin>>n>>m;
	cin>>s>>f;
	cin>>l>>r;
	for(int i=1; i<=m; i++){
		cin>>x>>y>>z;
		dis[x][y] = z;
		dis[y][x] = z;
	}
	for(int i=1; i<=n; i++)dis[i][i] = 0;
	for(int i=1; i<=n; i++){
		for(int j=1; j<=n; j++){
			for(int k=1; k<=n; k++){
				dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
			}
		}
	}
	for(int i=1; i<=n; i++){
		for(int j=1; j<=n; j++){
			if(dis[s][i] + dis[i][j] + dis[j][f] == dis[s][f]){
				res = min(res, dis[l][i] + dis[j][r]);
				res = min(res, dis[r][i] + dis[j][l]);
			}
		}	
	}
	cout<<min(res, dis[l][r])<<"\n";
}
main(){
	NeedForSpeed;
	int T = 1;
//	cin >> T;
	while(T--){
		solve();
	}
	return 0;
}

Compilation message (stderr)

commuter_pass.cpp:85:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   85 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...