Advertisement
Guest User

przemtynicy

a guest
Feb 24th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <cstdio>
  4. using namespace std;
  5. int n,tab[5005],m,a,b,c,t[5005],k[5005],wynik=1000000000;
  6. vector <pair<int,int> > v1[5005];
  7. vector <pair<int,int> > v2[5005];
  8. priority_queue <pair<int,int > >q;
  9. pair <int,int> g[5005];
  10. int main()
  11. {
  12.    scanf("%d",&n);
  13.     for(int i=1;n>=i;i++)
  14.     {
  15.         scanf("%d",&tab[i]);
  16.     }
  17.     scanf("%d",&m);
  18.     for(int i=1;m>=i;i++)
  19.     {
  20.          scanf("%d %d %d" ,&a,&b,&c);
  21.         v1[a].push_back({c,b});
  22.         v2[b].push_back({c,a});
  23.     }
  24.     q.push({0,1});
  25.     t[1]=0;
  26.     while(q.empty()==0)
  27.     {
  28.         int s=q.top().second;
  29.         int r=q.top().first;
  30.         q.pop();
  31.         if(t[s])
  32.             continue;
  33.         t[s]=-1*r;
  34.         g[s].first=1;
  35.         for(int i=0;v1[s].size()>i;i++)
  36.         {
  37.             if(t[v1[s][i].second]==0 and v1[s][i].second!=1)
  38.             {q.push({(t[s]+v1[s][i].first)*(-1),v1[s][i].second});}
  39.         }
  40.     }
  41.      q.push({0,1});
  42.     while(q.empty()==0)
  43.     {
  44.         int s=q.top().second;
  45.         int r=q.top().first;
  46.         q.pop();
  47.         if(k[s])
  48.             continue;
  49.              k[s]=-1*r;
  50.              g[s].second=1;
  51.         for(int i=0;v2[s].size()>i;i++)
  52.         {
  53.             if(k[v2[s][i].second]==0 and v2[s][i].second!=1 )
  54.             {q.push({(k[s]+v2[s][i].first)*(-1),v2[s][i].second});}
  55.         }
  56.     }
  57. for(int i=1;n>=i;i++)
  58. {
  59. if(g[i].first==1 and g[i].second==1)
  60.     wynik=min(wynik,t[i]+k[i]+tab[i]/2);
  61. }
  62. printf("%d",wynik);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement