本文已参与「新人创作礼」活动,一起开启掘金创作之路。
编辑
编辑
#include<bits/stdc++.h>
using namespace std;
int main()
{///存图
int n,m;///n个点,m条边
int u[10],v[10],w[10];///起点,终点,边权值
int first[10],next[10];///顶点表 边表
scanf("%d %d",&n,&m);
memset(first,-1,sizeof(first));
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&u[i],&v[i],&w[i]);
///读入每条边
next[i]=first[u[i]];
first[u[i]]=i;
}
///遍历每个顶点的所有边
for(int i=1;i<=n;i++)
{
int k=first[i];
while(k!=-1)
{
printf("%d %d %d\n",u[k],v[k],w[k]);
k=next[k];
}
}
return 0;
}
void add(int u,int v,int w)
{
edge[cnt].w = w;
edge[cnt].to = v;
edge[cnt].next = head[u];//下一个节点指向当前节点的编号
head[u] = cnt++;//cnt 记录总边数的编号
}
// head[u] 和 cnt 的初始值都为 -1
void add(int u, int v) {
nxt[++cnt] = head[u]; // 当前边的后继
head[u] = cnt; // 起点 u 的第一条边
to[cnt] = v; // 当前边的终点
}
// 遍历 u 的出边
for (int i = head[u]; ~i; i = nxt[i]) { // ~i 表示 i != -1
int v = to[i];
}