#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int const N=7e4+10;
vector<pair<int,int>>nei[N]={};
int P[N],h[N],vis[N]={};
void dfs(int u,int p=0)
{
P[u]=p;
for (auto [i,in]:nei[u])
{
if (i==p) continue;
h[i]=h[u]+1;
dfs(i,u);
}
}
vector<vector<int>>ans;
void up(int u,int v,int val)
{
vector<int>nd;
while (u!=v)
{
if (h[u]>h[v])
{
nd.push_back(u);
u=P[u];
}
else
{
nd.push_back(v);
v=P[u];
}
}
for (auto i:nd)
{
if (h[P[i]]==h[i]-1)
{
vis[i]=1;
ans.push_back({P[i],i,val});
}
P[i]=u;
}
}
inline void solve()
{
int n;
cin>>n;
for (int i=1;i<n;i++)
{
int u,v;
cin>>u>>v;
nei[u].push_back({v,i});
nei[v].push_back({u,i});
}
int q;
cin>>q;
vector<vector<int>>upd;
while (q--)
{
char x;
cin>>x;
int u,v,w;
cin>>u>>v>>w;
upd.push_back({w,u,v});
}
sort(begin(upd),end(upd));
for (auto i:upd)
up(i[1],i[2],i[0]);
for (int i=2;i<=n;i++)
{
if (!vis[i])
ans.push_back({i,P[i],0});
}
for (auto i:ans)
cout<<i[0]<<' '<<i[1]<<' '<<i[2]<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
# | 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... |