제출 #334436

#제출 시각아이디문제언어결과실행 시간메모리
334436amunduzbaevEvacuation plan (IZhO18_plan)C++14
0 / 100
1 ms620 KiB
#include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define prc(n) fixed << setprecision(n) #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pi acos(-1); const int inf = 1e9+7; const int N = 1e3+5; vector<vector<pii>> edges(N); int cur; ll dis[N], used[N]; void dfs(int u, ll d, int pr){ queue<pii>qq; qq.push({u, d}); while(!qq.empty()){ pii cur = qq.front(); qq.pop(); dis[cur.ff] = cur.ss; for(auto x:edges[cur.ff]) if(dis[x.ff] > d + x.ss)qq.push({x.ff, d+x.ss}); } } void solve(){ fastios int n, m; cin>>n>>m; for(int i=0;i<m;i++){ int a, b, w; cin>>a>>b>>w; edges[a].pb({b, w}); edges[b].pb({a, w}); } int k; cin>>k; memset(dis, inf, sizeof(dis)); for(int i=0;i<k;i++){ cin>>cur; dfs(cur, 0, -1); } int q; cin>>q; for(int i=0;i<q;i++){ int f, s; cin>>f>>s; cout<<min(dis[f], dis[s])<<"\n"; } return; } /* 5 6 1 2 4 1 3 6 1 4 2 3 2 9 4 5 12 1 5 7 2 2 4 2 1 5 3 1 * */ int main(){ fastios 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...
#Verdict Execution timeMemoryGrader output
Fetching results...