fork download
  1. #include<bits/stdc++.h>
  2.  
  3. #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  4. #define ll long long
  5. #define pii pair<int,int>
  6. #define pill pair<int,ll>
  7. #define pll pair<ll,ll>
  8. #define pb push_back
  9. #define fi first
  10. #define se second
  11. #define ff fi.fi
  12. #define fs fi.se
  13. #define sf se.fi
  14. #define ss se.se
  15. #define MASK(x) (((1)<<(x))-1)
  16. #define getbit(x,k) (((x)>>(k))&1)
  17.  
  18. using namespace std;
  19.  
  20. const int maxn=1e5+5,mod=1e9+22071997;
  21. const ll inf=1e18;
  22.  
  23. int n,m,k;
  24. vector<pii>eg[maxn];
  25. ll d[2][maxn];
  26. void dijkstra(int s, ll f[])
  27. {
  28. fill(f+1,f+1+n,inf);f[s]=0;
  29. priority_queue<pll,vector<pll>,greater<pll>>pQ;
  30. pQ.push({f[s],s});
  31. while(pQ.size())
  32. {
  33. pll u=pQ.top();pQ.pop();
  34. if(u.fi!=f[u.se]) continue;
  35. for(pii v:eg[u.se]) if(u.fi+v.se<f[v.fi])
  36. {
  37. f[v.fi]=u.fi+v.se;
  38. pQ.push({f[v.fi],v.fi});
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. cin>>n>>m>>k;
  45. for(int i=1;i<=m;i++)
  46. {
  47. int u,v,c;cin>>u>>v>>c;
  48. eg[u].pb({v,c});//eg[v].pb({u,c});
  49. }
  50. dijkstra(1,d[0]);dijkstra(n,d[1]);
  51. while(k--)
  52. {
  53. ll a,b,ans=inf;cin>>a>>b;
  54. for(int i=1;i<=n;i++)
  55. if(d[0][i]!=inf && d[1][i]!=inf)
  56. ans=min(ans,d[0][i]*a+d[1][i]*b);
  57. cout<<ans<<'\n';
  58. }
  59. }
  60.  
Success #stdin #stdout 0.01s 5908KB
stdin
Standard input is empty
stdout
Standard output is empty