整张表里有几个 1
五个人、四段关系,建成邻接矩阵。运行下面这段程序:
#include <iostream>
#include <string>
#include <utility>
#include <vector>
using namespace std;
// 五个人:0 阿岚、1 小满、2 阿泰、3 南风、4 北辰
const vector<string> NAMES = {"阿岚", "小满", "阿泰", "南风", "北辰"};
// 四段关系(无向):阿岚-小满、阿岚-阿泰、小满-阿泰、阿泰-南风
const vector<pair<int, int>> EDGES = {{0, 1}, {0, 2}, {1, 2}, {2, 3}};
int id_of(const string& name) {
for (int i = 0; i < (int)NAMES.size(); i++) {
if (NAMES[i] == name) return i;
}
return -1;
}
vector<vector<int>> build_mat() {
int n = NAMES.size();
vector<vector<int>> m(n, vector<int>(n, 0));
for (auto [a, b] : EDGES) {
m[a][b] = 1;
m[b][a] = 1;
}
return m;
}
int main() {
auto m = build_mat();
int n = 0;
for (auto& row : m) {
for (int x : row) n += x;
}
cout << n << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)
全部评论