Tranvick

Meoooow

Mar 24th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <queue>
  5.  
  6. using namespace std;
  7.  
  8. const int INF = (int)1e9;
  9.  
  10. int n, ans = INF;
  11. vector<vector<int> > g, c;
  12. vector<int> d;
  13.  
  14. void bfs() {
  15.     queue<int> q;
  16.     d.resize(n + 1, INF);
  17.     d[1] = 0;
  18.     q.push(1);
  19.     while (!q.empty()) {
  20.         int v = q.front();
  21.         q.pop();
  22.         for (int i = 0; i < g[v].size(); ++i) {
  23.             int to = g[v][i];
  24.             d[to] = d[v] + c[v][i];
  25.             q.push(to);
  26.         }
  27.     }
  28. }
  29.  
  30. int main() {
  31.     freopen("input.txt", "r", stdin);
  32.     freopen("output.txt", "w", stdout);
  33.     scanf("%d", &n);
  34.     g.resize(n + 1);
  35.     c.resize(n + 1);
  36.     for (int i = 0; i < n; ++i) {
  37.         int v, k;
  38.         scanf("%d%d", &v, &k);
  39.         for (int i = 0; i < k; ++i) {
  40.             int to, cost;
  41.             scanf("%d%d", &to, &cost);
  42.             g[v].push_back(to);
  43.             c[v].push_back(cost);
  44.         }
  45.     }
  46.     bfs();
  47.     for (int i = 1; i <= n; ++i) {
  48.         if (g[i].empty() && d[i] < ans) {
  49.             ans = d[i];
  50.         }
  51.     }
  52.     printf("%d\n", ans);
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment