This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define f first
#define s second
vector <pair<ll,ll>> g[50005];
bool vis[50005];
ll ans;
void dfs(ll nodo, ll peso) {
vis[nodo] = true;
ans++;
for (auto it=g[nodo].begin();it!=g[nodo].end();it++) {
if (vis[it->f]==false && it->s >= peso) {
dfs(it->f,peso);
}
}
return;
}
ll bin(ll in, ll ini, ll fin, ll tar) {
ll mid = (ini+fin)/2;
if (ini==fin) return ini-1;
if (g[in][mid].f>tar) return bin(in,ini,mid,tar);
else return bin(in,mid+1,fin,tar);
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);
ll n,m,i,t,b,r,s,w,q,aux;
cin>>n>>m;
ll u[m],v[m],d[m];
for (i=0;i<m;i++) {
cin>>u[i]>>v[i]>>d[i];
g[u[i]].push_back({v[i],d[i]});
g[v[i]].push_back({u[i],d[i]});
}
for (i=1;i<=n;i++) sort(g[i].begin(),g[i].end());
cin>>q;
while (q--) {
cin>>t;
if (t==1) {
cin>>b>>r;
aux = bin(v[b-1],0,g[v[b-1]].size(),u[b-1]);
if (aux!=-1) g[v[b-1]][aux].s = r;
aux = bin(u[b-1],0,g[u[b-1]].size(),v[b-1]);
if (aux!=-1) g[u[b-1]][aux].s = r;
}
else {
cin>>s>>w;
for (i=0;i<=n;i++) vis[i] = false;
ans = 0;
dfs(s,w);
cout<<ans<<"\n";
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |