#include<bits/stdc++.h>using namespace std;int n,m,u,v,c[1000][1000],nho;bool tick[10000],a[1000][1000];void DFS(int u){ stack<int>st; if(tick[u]==true) { st.push(u);tick[u]=false; while(!st.empty()) { v=st.top();st.pop();//cout<<v<<” “; for(int i=n;i>=1;i–) { if (a[i][v]==true && tick[i]==true) { st.push(i); tick[i]=false; c[i][v]+=c[nho][]; } } nho=v; } }}int main(){ cin>>n>>m; for(int i=1;i<n;i++) { cin>>u>>v>>c[u][v]; a[u][v]=true; a[v][u]=true; } memset(tick,true,sizeof(tick)); for(int j=1;j<=m;j++) DFS(j); for(int j=1;j<=n;j++) for(int i=1;i<=n;i++) cout<<j<<” “<<i<<” “<<c[j][i]<<endl;} Bình luận
Chúc bạn học tốt!!!
#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,c[1000][1000],nho;
bool tick[10000],a[1000][1000];
void DFS(int u)
{
stack<int>st;
if(tick[u]==true)
{
st.push(u);tick[u]=false;
while(!st.empty())
{
v=st.top();st.pop();//cout<<v<<” “;
for(int i=n;i>=1;i–)
{
if (a[i][v]==true && tick[i]==true)
{
st.push(i); tick[i]=false;
c[i][v]+=c[nho][];
}
}
nho=v;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<n;i++)
{
cin>>u>>v>>c[u][v];
a[u][v]=true;
a[v][u]=true;
}
memset(tick,true,sizeof(tick));
for(int j=1;j<=m;j++)
DFS(j);
for(int j=1;j<=n;j++)
for(int i=1;i<=n;i++)
cout<<j<<” “<<i<<” “<<c[j][i]<<endl;
}