#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(long long i=0;i<(long long)(n);i++)
#define REP(i,k,n) for(long long i=k;i<(long long)(n);i++)
#define all(a) a.begin(),a.end()
#define pb emplace_back
#define eb emplace_back
#define lb(v,k) (lower_bound(all(v),k)-v.begin())
#define ub(v,k) (upper_bound(all(v),k)-v.begin())
#define fi first
#define se second
#define pi M_PI
#define PQ(T) priority_queue<T>
#define SPQ(T) priority_queue<T,vector<T>,greater<T>>
#define dame(a) {out(a);return 0;}
#define decimal cout<<fixed<<setprecision(15);
#define dupli(a) a.erase(unique(all(a)),a.end())
typedef long long ll;
typedef pair<ll,ll> P;
typedef tuple<ll,ll,ll> PP;
typedef tuple<ll,ll,ll,ll> PPP;
typedef multiset<ll> S;
using vi=vector<ll>;
using vvi=vector<vi>;
using vvvi=vector<vvi>;
using vvvvi=vector<vvvi>;
using vp=vector<P>;
using vvp=vector<vp>;
using vb=vector<bool>;
using vvb=vector<vb>;
const ll inf=1001001001001001001;
const ll INF=1001001001;
const ll mod=1000000007;
const double eps=1e-10;
template<class T> bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;}
template<class T> bool chmax(T&a,T b){if(a<b){a=b;return true;}return false;}
template<class T> void out(T a){cout<<a<<'\n';}
template<class T> void outp(T a){cout<<'('<<a.fi<<','<<a.se<<')'<<'\n';}
template<class T> void outvp(T v){rep(i,v.size())cout<<'('<<v[i].fi<<','<<v[i].se<<')';cout<<'\n';}
template<class T> void outvvp(T v){rep(i,v.size())outvp(v[i]);}
template<class T> void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout<<v[i];}cout<<'\n';}
template<class T> void outvv(T v){rep(i,v.size())outv(v[i]);}
template<class T> bool isin(T x,T l,T r){return (l)<=(x)&&(x)<=(r);}
template<class T> void yesno(T b){if(b)out("yes");else out("no");}
template<class T> void YesNo(T b){if(b)out("Yes");else out("No");}
template<class T> void YESNO(T b){if(b)out("YES");else out("NO");}
template<class T> void noyes(T b){if(b)out("no");else out("yes");}
template<class T> void NoYes(T b){if(b)out("No");else out("Yes");}
template<class T> void NOYES(T b){if(b)out("NO");else out("YES");}
void outs(ll a,ll b){if(a>=inf-100)out(b);else out(a);}
ll gcd(ll a,ll b){if(b==0)return a;return gcd(b,a%b);}
ll modpow(ll a,ll b){a%=mod;if(b==0)return 1;if(b&1)return a*modpow(a,b-1)%mod;ll k=modpow(a,b/2);return k*k%mod;}
vi dx={0,0,1,-1},dy={1,-1,0,0};
vector<PP> change;
vi parent,rankk,sz;
void init(ll n){
parent=vi(n);
rankk=vi(n);
sz=vi(n,1);
rep(i,n)parent[i]=i;
}
ll root(ll i){if(parent[i]==i)return i;return root(parent[i]);}
ll getsize(ll i){return sz[root(i)];}
bool same(ll a,ll b){return root(a)==root(b);}
bool heigou(ll x,ll y){
x=root(x);y=root(y);
if(x==y)return false;
if(rankk[x]<rankk[y]){parent[x]=y;sz[y]+=sz[x];}
else{parent[y]=x;sz[x]+=sz[y];}
if(rankk[x]==rankk[y])rankk[x]++;
return true;
}
bool heigou2(ll x,ll y){
x=root(x);y=root(y);
if(x==y)return false;
if(rankk[x]<rankk[y]){
change.pb(0,x,parent[x]);
change.pb(2,y,sz[y]);
parent[x]=y;sz[y]+=sz[x];
}
else{
change.pb(0,y,parent[y]);
change.pb(2,x,sz[x]);
parent[y]=x;sz[x]+=sz[y];
}
if(rankk[x]==rankk[y]){
change.pb(1,x,rankk[x]);
rankk[x]++;
}
return true;
}
void maku(){
while(change.size()){
ll id,a,b;
tie(id,a,b)=change.back();
change.pop_back();
if(id==0)parent[a]=b;
if(id==1)rankk[a]=b;
if(id==2)sz[a]=b;
}
}
void solve(){
ll n,m,q;cin>>n>>m;
vp ans;
vp hen(m);
vvp upd(m,vp(1));
set<P> con;
vi num(m);
rep(i,m){
cin>>hen[i].fi>>hen[i].se>>upd[i][0].se;
hen[i].fi--;hen[i].se--;
upd[i][0].fi=-1;
upd[i][0].se*=-1;
con.insert(P(upd[i][0].se,i));
num[i]=upd[i][0].se;
}
cin>>q;
ll block=600;
vector<vector<PP>> group(q);
ll cnt=-1;
rep(i,q){
ll t,a,b;cin>>t>>a>>b;b*=-1;
t--;a--;
if(i%block==0)cnt++;
group[cnt].eb(t,a,b);
if(!t)upd[a].eb(i,b);
}
cnt++;
rep(i,cnt){
init(n);
vp s;
rep(j,group[i].size()){
if(get<0>(group[i][j]))s.eb(get<2>(group[i][j]),j);
else{
ll k=get<1>(group[i][j]);
if(num[k]!=inf){
con.erase(P(num[k],k));
num[k]=inf;
}
}
}
auto itr=con.begin();
int w=0;
sort(all(s));
while(itr!=con.end()){
auto x=*itr;
while(w<s.size()){
if(x.fi<=s[w].fi)break;
ll id=s[w].se,ma=s[w].fi;
rep(j,group[i].size()){
if(get<0>(group[i][j]))continue;
ll it=lb(upd[get<1>(group[i][j])],P(i*block+id,-inf));
if(it&&upd[get<1>(group[i][j])][it-1].se<=ma)heigou2(hen[get<1>(group[i][j])].fi,hen[get<1>(group[i][j])].se);
}
ans.pb(i*block+id,getsize(get<1>(group[i][id])));
maku();
w++;
}
if(w==s.size())break;
heigou(hen[x.se].fi,hen[x.se].se);
itr++;
}
while(w<s.size()){
ll id=s[w].se,ma=s[w].fi;
rep(j,group[i].size()){
if(get<0>(group[i][j]))continue;
ll it=lb(upd[get<1>(group[i][j])],P(i*block+id,-inf));
if(it&&upd[get<1>(group[i][j])][it-1].se<=ma)heigou2(hen[get<1>(group[i][j])].fi,hen[get<1>(group[i][j])].se);
}
ans.pb(i*block+id,getsize(get<1>(group[i][id])));
maku();
w++;
}
for(int j=group[i].size()-1;j>=0;j--){
if(!get<0>(group[i][j])){
ll k=get<1>(group[i][j]);
if(num[k]==inf){
num[k]=get<2>(group[i][j]);
con.insert(P(num[k],k));
}
}
}
}
sort(all(ans));
for(auto x:ans)out(x.se);
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(false);
solve();
}
Compilation message
bridges.cpp: In function 'void solve()':
bridges.cpp:150:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(w<s.size()){
~^~~~~~~~~
bridges.cpp:162:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(w==s.size())break;
~^~~~~~~~~~
bridges.cpp:166:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(w<s.size()){
~^~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
60 ms |
1400 KB |
Output is correct |
4 |
Correct |
17 ms |
1280 KB |
Output is correct |
5 |
Correct |
85 ms |
1400 KB |
Output is correct |
6 |
Correct |
70 ms |
1272 KB |
Output is correct |
7 |
Correct |
80 ms |
1276 KB |
Output is correct |
8 |
Correct |
85 ms |
1272 KB |
Output is correct |
9 |
Correct |
79 ms |
1272 KB |
Output is correct |
10 |
Correct |
89 ms |
1272 KB |
Output is correct |
11 |
Correct |
86 ms |
1192 KB |
Output is correct |
12 |
Correct |
97 ms |
1284 KB |
Output is correct |
13 |
Correct |
88 ms |
1272 KB |
Output is correct |
14 |
Correct |
86 ms |
1304 KB |
Output is correct |
15 |
Correct |
93 ms |
1272 KB |
Output is correct |
16 |
Correct |
78 ms |
1272 KB |
Output is correct |
17 |
Correct |
77 ms |
1272 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2309 ms |
17032 KB |
Output is correct |
2 |
Correct |
2263 ms |
17212 KB |
Output is correct |
3 |
Correct |
2270 ms |
17172 KB |
Output is correct |
4 |
Correct |
2222 ms |
17304 KB |
Output is correct |
5 |
Correct |
2383 ms |
17192 KB |
Output is correct |
6 |
Correct |
2550 ms |
17316 KB |
Output is correct |
7 |
Correct |
2701 ms |
17320 KB |
Output is correct |
8 |
Correct |
2552 ms |
17428 KB |
Output is correct |
9 |
Correct |
125 ms |
8168 KB |
Output is correct |
10 |
Correct |
1617 ms |
17228 KB |
Output is correct |
11 |
Correct |
1697 ms |
17048 KB |
Output is correct |
12 |
Correct |
1616 ms |
17100 KB |
Output is correct |
13 |
Correct |
1913 ms |
18040 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1589 ms |
14216 KB |
Output is correct |
2 |
Correct |
993 ms |
9524 KB |
Output is correct |
3 |
Correct |
1812 ms |
13784 KB |
Output is correct |
4 |
Correct |
1664 ms |
13912 KB |
Output is correct |
5 |
Correct |
145 ms |
8040 KB |
Output is correct |
6 |
Correct |
1611 ms |
13780 KB |
Output is correct |
7 |
Correct |
1349 ms |
14004 KB |
Output is correct |
8 |
Correct |
1421 ms |
13984 KB |
Output is correct |
9 |
Correct |
994 ms |
14136 KB |
Output is correct |
10 |
Correct |
947 ms |
13996 KB |
Output is correct |
11 |
Correct |
1274 ms |
14248 KB |
Output is correct |
12 |
Correct |
1137 ms |
14248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
3079 ms |
23628 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2309 ms |
17032 KB |
Output is correct |
2 |
Correct |
2263 ms |
17212 KB |
Output is correct |
3 |
Correct |
2270 ms |
17172 KB |
Output is correct |
4 |
Correct |
2222 ms |
17304 KB |
Output is correct |
5 |
Correct |
2383 ms |
17192 KB |
Output is correct |
6 |
Correct |
2550 ms |
17316 KB |
Output is correct |
7 |
Correct |
2701 ms |
17320 KB |
Output is correct |
8 |
Correct |
2552 ms |
17428 KB |
Output is correct |
9 |
Correct |
125 ms |
8168 KB |
Output is correct |
10 |
Correct |
1617 ms |
17228 KB |
Output is correct |
11 |
Correct |
1697 ms |
17048 KB |
Output is correct |
12 |
Correct |
1616 ms |
17100 KB |
Output is correct |
13 |
Correct |
1913 ms |
18040 KB |
Output is correct |
14 |
Correct |
1589 ms |
14216 KB |
Output is correct |
15 |
Correct |
993 ms |
9524 KB |
Output is correct |
16 |
Correct |
1812 ms |
13784 KB |
Output is correct |
17 |
Correct |
1664 ms |
13912 KB |
Output is correct |
18 |
Correct |
145 ms |
8040 KB |
Output is correct |
19 |
Correct |
1611 ms |
13780 KB |
Output is correct |
20 |
Correct |
1349 ms |
14004 KB |
Output is correct |
21 |
Correct |
1421 ms |
13984 KB |
Output is correct |
22 |
Correct |
994 ms |
14136 KB |
Output is correct |
23 |
Correct |
947 ms |
13996 KB |
Output is correct |
24 |
Correct |
1274 ms |
14248 KB |
Output is correct |
25 |
Correct |
1137 ms |
14248 KB |
Output is correct |
26 |
Correct |
2368 ms |
17164 KB |
Output is correct |
27 |
Correct |
2609 ms |
17240 KB |
Output is correct |
28 |
Correct |
2874 ms |
17028 KB |
Output is correct |
29 |
Correct |
2321 ms |
16972 KB |
Output is correct |
30 |
Correct |
2761 ms |
17296 KB |
Output is correct |
31 |
Correct |
2699 ms |
17088 KB |
Output is correct |
32 |
Correct |
2787 ms |
17496 KB |
Output is correct |
33 |
Correct |
2430 ms |
16920 KB |
Output is correct |
34 |
Correct |
2482 ms |
17080 KB |
Output is correct |
35 |
Correct |
2394 ms |
17032 KB |
Output is correct |
36 |
Correct |
2080 ms |
17236 KB |
Output is correct |
37 |
Correct |
2098 ms |
17184 KB |
Output is correct |
38 |
Correct |
1980 ms |
17032 KB |
Output is correct |
39 |
Correct |
1474 ms |
17328 KB |
Output is correct |
40 |
Correct |
1446 ms |
17152 KB |
Output is correct |
41 |
Correct |
1688 ms |
17128 KB |
Output is correct |
42 |
Correct |
1632 ms |
17608 KB |
Output is correct |
43 |
Correct |
1499 ms |
17676 KB |
Output is correct |
44 |
Correct |
1639 ms |
17800 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
60 ms |
1400 KB |
Output is correct |
4 |
Correct |
17 ms |
1280 KB |
Output is correct |
5 |
Correct |
85 ms |
1400 KB |
Output is correct |
6 |
Correct |
70 ms |
1272 KB |
Output is correct |
7 |
Correct |
80 ms |
1276 KB |
Output is correct |
8 |
Correct |
85 ms |
1272 KB |
Output is correct |
9 |
Correct |
79 ms |
1272 KB |
Output is correct |
10 |
Correct |
89 ms |
1272 KB |
Output is correct |
11 |
Correct |
86 ms |
1192 KB |
Output is correct |
12 |
Correct |
97 ms |
1284 KB |
Output is correct |
13 |
Correct |
88 ms |
1272 KB |
Output is correct |
14 |
Correct |
86 ms |
1304 KB |
Output is correct |
15 |
Correct |
93 ms |
1272 KB |
Output is correct |
16 |
Correct |
78 ms |
1272 KB |
Output is correct |
17 |
Correct |
77 ms |
1272 KB |
Output is correct |
18 |
Correct |
2309 ms |
17032 KB |
Output is correct |
19 |
Correct |
2263 ms |
17212 KB |
Output is correct |
20 |
Correct |
2270 ms |
17172 KB |
Output is correct |
21 |
Correct |
2222 ms |
17304 KB |
Output is correct |
22 |
Correct |
2383 ms |
17192 KB |
Output is correct |
23 |
Correct |
2550 ms |
17316 KB |
Output is correct |
24 |
Correct |
2701 ms |
17320 KB |
Output is correct |
25 |
Correct |
2552 ms |
17428 KB |
Output is correct |
26 |
Correct |
125 ms |
8168 KB |
Output is correct |
27 |
Correct |
1617 ms |
17228 KB |
Output is correct |
28 |
Correct |
1697 ms |
17048 KB |
Output is correct |
29 |
Correct |
1616 ms |
17100 KB |
Output is correct |
30 |
Correct |
1913 ms |
18040 KB |
Output is correct |
31 |
Correct |
1589 ms |
14216 KB |
Output is correct |
32 |
Correct |
993 ms |
9524 KB |
Output is correct |
33 |
Correct |
1812 ms |
13784 KB |
Output is correct |
34 |
Correct |
1664 ms |
13912 KB |
Output is correct |
35 |
Correct |
145 ms |
8040 KB |
Output is correct |
36 |
Correct |
1611 ms |
13780 KB |
Output is correct |
37 |
Correct |
1349 ms |
14004 KB |
Output is correct |
38 |
Correct |
1421 ms |
13984 KB |
Output is correct |
39 |
Correct |
994 ms |
14136 KB |
Output is correct |
40 |
Correct |
947 ms |
13996 KB |
Output is correct |
41 |
Correct |
1274 ms |
14248 KB |
Output is correct |
42 |
Correct |
1137 ms |
14248 KB |
Output is correct |
43 |
Execution timed out |
3079 ms |
23628 KB |
Time limit exceeded |
44 |
Halted |
0 ms |
0 KB |
- |