7-2 最小生成树-kruskal算法 分数 15
const int maxn = 1000;
struct edge {
int u, v, w;
}e[maxn];
int n, m, f[30];
bool cmp(edge a, edge b) {
return a.w < b.w;
}
int find(int x) {
if (f[x] == x) {
return x;
}
else {
f[x] = find(f[x]);
return f[x];
}
} //int arr[100];
//int n;
//cin >> n;
//for (int i = 1; i <= n; i++)cin >> arr[i];
cin >> n >> m;
for (int i = 1; i <= n; i++)f[i] = i;
for (int i = 1; i <= m; i++) {
cin >> e[i].u >> e[i].v >> e[i].w;
}
sort(e + 1, e + m + 1, cmp);
for (int i = 1; i <= m; i++) {
int a = find(e[i].u), b = find(e[i].v);
if (a != b) {
f[a] = b;
if (e[i].u > e[i].v) { cout << e[i].v << "," << e[i].u << "," << e[i].w << endl; }
else {
cout << e[i].u << "," << e[i].v << "," << e[i].w << endl;
}
}
else {
continue;
}
}

7-1 校园最短路径 分数 10
主要是怎么打印路径,以及输入的格式,怎么转换这个输入格式
用pre数组,用string,然后在string里,用find,用字符下标,都转换为int型
链式前向星+堆优化dij
用pre数组记录前驱节点的索引,就是在string里的下标,也通过string类里的find函数找到相应字符的下标
#include
#include
#include
#include
#include
#include
#include
#include
#include
邻接矩阵+朴素dij
#include
#include
#include
#include
#include
#include
#include
#include
#include