请编写程序创建一个有向图。有向图中包含n个顶点,编号为0至n-1。 输入格式: 输入第一行为两个正整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过20000。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。 输出格式: 按顶点编号递增顺序输出每个顶点引出的边,每个顶点占一行,若某顶点没有引出边,则不输出。每行表示一个顶点引出的所有边,格式为a:(a,b,w)……,表示有向边a->b的权值为w,a引出的多条边按编号b的递增序排列。C++要求尽可能简单
时间: 2024-02-18 14:05:10 浏览: 12
以下是一个简单的C++程序,用于创建有向图并输出每个顶点引出的边:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 20000;
struct Edge {
int to;
int weight;
Edge(int t, int w) : to(t), weight(w) {}
};
vector<Edge> edges[MAXN];
int n, e;
int main() {
cin >> n >> e;
for (int i = 0; i < e; i++) {
int a, b, c;
cin >> a >> b >> c;
edges[a].push_back(Edge(b, c));
}
for (int i = 0; i < n; i++) {
if (edges[i].size() == 0) {
continue;
}
cout << i << ":";
for (int j = 0; j < edges[i].size(); j++) {
cout << "(" << i << "," << edges[i][j].to << "," << edges[i][j].weight << ")";
}
cout << endl;
}
return 0;
}
```
该程序使用一个 vector 数组 edges 存储每个顶点引出的边。输入时,按照题目要求读入每条边的信息并将其加入对应顶点的 edges 数组中。输出时,按照顶点编号递增顺序遍历 edges 数组,对每个非空向量(即该顶点有引出的边)输出该顶点引出的所有边。