Submission #1004987

#TimeUsernameProblemLanguageResultExecution timeMemory
1004987vjudge1Bridges (APIO19_bridges)C++17
0 / 100
3065 ms21208 KiB
#include<bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;
set<pair<int,int> > G[N];
vector<vector<int> > e;
bool seen[N];

void dfs(int v, int w)
{
  seen[v] = true;
  for(auto [u, ew] : G[v])
    if(w <= ew && !seen[u])
      dfs(u, w);
}

int main()
{
  int n, m;
  cin >> n >> m;
  for(int i = 0; i < m; i ++)
    {
      int u, v, w;
      cin >> u >> v >> w;
      G[u].insert({v, w});
      G[v].insert({u, w});
      e.push_back({u, v, w});
    }

  int q;
  cin >> q;
  while(q--)
    {
      int t, x, y;
      cin >> t >> x >> y;
      if(t == 1)
	{
	  x--;
	  int u = e[x][0], v = e[x][1], w = e[x][2];
	  G[u].erase({v, w});
	  G[v].erase({u, w});
	  w = e[x][2] = y;
	  G[u].insert({v, w});
	  G[v].insert({u, w});
	}
      else
	{
	  dfs(x, y);
	  int ans = 0;
	  for(int i = 1; i <= n; i ++)
	    ans += seen[i], seen[i] = false;
	  cout << ans << endl;
	}
    }
  
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...