Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <vector>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. vector<bool> used;
  8. vector<int> weight;
  9. vector < vector<int> > g;
  10.  
  11. void dfs_visit(int v, int p);
  12.  
  13. void dfs(int n) {
  14.     for (int j = 0; j <= 1; ++j)
  15.     {
  16.         used.assign(n, false);
  17.         for (int i = 0; i < n; ++i)
  18.             if (!used[i])
  19.                 dfs_visit(0, 0);
  20.     }
  21. }
  22.  
  23. void dfs_visit(int v, int p) {
  24.     used[v] = true;
  25.     auto r = g[v];
  26.     int sz = r.size();
  27.  
  28.     for (int i = 0; i < sz; ++i){
  29.         if (!used[r[i]])
  30.             dfs_visit(r[i], v);
  31.  
  32.         if (weight[r[i]] < weight[v])
  33.             weight[v] = weight[r[i]];
  34.     }
  35. }
  36.  
  37. void init(int & n) {
  38.     ifstream ifs("input.txt");
  39.  
  40.     ifs >> n;
  41.  
  42.     g = vector < vector<int> >(n);
  43.  
  44.     weight = vector<int>(n);
  45.  
  46.     for (int i = 0; i < n; ++i)
  47.         ifs >> weight[i];
  48.  
  49.     // инициализация
  50.     for (int i = 0; i < n; ++i){
  51.         int sz;
  52.         ifs >> sz;
  53.         g[i] = vector<int>(sz);
  54.         for (int j = 0; j< sz; ++j)
  55.             ifs >> g[i][j];
  56.     }
  57. }
  58.  
  59. int main() {
  60.  
  61.     int n;
  62.     init(n);
  63.  
  64.     dfs(n);
  65.    
  66.     for (auto x : weight)
  67.         cout << x << ' ';
  68.     cout << endl;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement