直接贴代码(懒)
感觉注释也算是详细
//数组模拟邻接表存有向图
//注:输出的边的情况 按照开始点的数字大小升序排序 并且 按照输入边的倒序输出
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int u[N] , v[N] , w[N] , first[N] , next[N];
// 开始点 结束点 距离 第一条边 当前边的下一条边(也可以说是前一条边)
int main () {
int n , m;
// 点数 边数
scanf ("%d %d" , &n , &m);
for (int i = 1 ; i <= m ; i ++) {
scanf ("%d %d %d" , &u[i] , &v[i] , &w[i]);//输入第i条边
next[i] = first[u[i]];//存下上一条以u[i]开头的边
first[u[i]] = i;//存下以u[i]开头的第i条边
}
printf ("\n");
for (int i = 1 ; i <= n ; i ++) {//按开始点的数字大小升序输出
int k = first[i];
while (k != 0) {//按照输入的顺序倒序输出
printf ("%d %d %d\n" , u[k] , v[k] , w[k]);
k = next[k];
}
}
return 0;
}