Advertisement
arfin97

D. Connecting To One.cpp

Sep 23rd, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define D(x) cout << #x << " = " << (x) << endl
  4. #define fr freopen("in.txt", "r", stdin);
  5. #define fw freopen("out.txt", "w", stdout);
  6. #define mem(x) memset((x), 0, sizeof((x)));
  7. #define MAX 160000
  8. vector<int> edges[MAX];
  9. vector<int> cost[MAX];
  10. int connected = 0;
  11.  
  12. bool visited[MAX];
  13. void dfs(int s) {
  14.     visited[s] = true;
  15.     for(int i = 0; i < edges[s].size(); ++i)    {
  16.         if(visited[edges[s][i]] == false) {
  17.             connected++;
  18.             dfs(edges[s][i]);
  19.         }
  20.     }
  21. }
  22.  
  23.  
  24. void initialize() {
  25.     memset(visited, false, sizeof(visited));
  26. }
  27.  
  28. int main() {
  29.     int tc;
  30.     cin >> tc;
  31.     for(int tr = 1; tr <= tc; tr++) {
  32.         printf("Case %d:\n", tr);
  33.         //Graph Input;
  34.         int n, e;
  35.         scanf("%d %d", &n, &e);
  36.         for(int i = 0; i < e; i++) {
  37.             int u, v, w;
  38.             scanf("%d %d %d", &u, &v, &w);
  39.             edges[u].push_back(v);
  40.             edges[v].push_back(u);
  41.             cost[u].push_back(w);
  42.             cost[v].push_back(w);
  43.         }
  44.         //
  45.         //Erasing Code
  46.         int q;
  47.         cin >> q;
  48.         for(int x = 0; x < q; x++) {
  49.             int del;
  50.             cin >> del;
  51.             for(int i = 1; i <= n; i++) {
  52.                 for(int j = 0; j < edges[i].size(); j++) {
  53.                     if(cost[i][j] < del) {
  54.                         edges[i].erase(edges[i].begin()+j);
  55. //                        cout <<"Double bal" << endl;
  56.                     }
  57.                 }
  58.             }
  59.  
  60.             //Connected component
  61.             initialize();
  62.             dfs(1);
  63.             cout << connected << endl;
  64.             connected = 0;
  65.         }
  66.         for(int i = 0; i < MAX; i++){
  67.             edges[i].clear();
  68.             cost[i].clear();
  69.         }
  70.     }
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement