先给出代码
#include<bits/stdc++.h>
using namespace std;
#define MAXN 10050
struct EDGE
{
int w;//权值
int next;//与该边同起点的上一条边的位置
int e;//边的终点
}edge[MAXN];
int cnt;
int head[MAXN];//以i为起点的最后一条边
void add(int u,int v,int w)
{
edge[cnt].w=w;
edge[cnt].e=v;
edge[cnt].next=head[u];
head[u]=cnt++;//head[u]=cnt; cnt++;
}
int main()
{
memset(head,0,sizeof(head));
cnt=1;
int n,a,b,c;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>b>>c;
add(a,b,c);
}
int start;
cin>>start;
for(int i=head[start];i!=0;i=edge[i].next)
{
cout<<start<<"->"<<edge[i].e<<" "<<edge[i].w<<endl;
}
return 0;
}
带入几组数据自己手动模拟一下基本就明了了。。。