2024/2/7 图的基础知识

图的存储

B3643 图的存储 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:mp[n][n]用来存邻接矩阵,二维vector用来存每个点连的点

完整代码:

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
const int N = 1e5 + 10;
int n, m;
std::vector<std::vector<int>> g(N);
signed main() {
    std::cin >> n >> m;
    int mp[n + 10][n + 10];
    memset(mp, 0, sizeof(mp));
    for (int i = 0; i < m; i++) {
        int u, v;
        std::cin >> u >> v;
        g[u].push_back(v);//里面装的是u能到的点,u能到v
        g[v].push_back(u);//v能到u
        mp[u][v] = 1;
        mp[v][u] = 1;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            std::cout << mp[i][j] << " ";
        }
        std::cout << "\n";
    }
    for (int i = 1; i <= n; i++) {
        std::sort(g[i].begin(), g[i].end());
    }
    for (int i = 1; i <= n; i++) {
        std::cout << g[i].size() << " ";
        for (int j = 0; j < g[i].size(); j++) {
            std::cout << g[i][j] << " ";
        }
        std::cout << "\n";
    }
    return 0;
}

图的遍历

P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:反向建图,用dfs确定每一个点最大可以到达哪一个点,然后按顺序输出

完整代码:

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
const int N = 1e5 + 10;
std::vector<std::vector<int>> g(N);
int vis[N];
void dfs(int x, int y) {
    if (vis[x] != 0)
        return;
    else {
        vis[x] = y;
        for (int i = 0; i < g[x].size(); i++) {
            dfs(g[x][i], y);
        }
    }
}
signed main() {
    int n, m;
    std::cin >> n >> m;
    for (int i = 1; i <= m; i++) {
        int u, v;
        std::cin >> u >> v;
        g[v].push_back(u);
    }
    for (int i = n; i >= 1; i--) {
        dfs(i, i);
    }
    for (int i = 1; i <= n; i++) {
        std::cout << vis[i] << " ";
    }
    return 0;
}
相关推荐
iAkuya10 分钟前
(leetcode)力扣100 62N皇后问题 (普通回溯(使用set存储),位运算回溯)
算法·leetcode·职场和发展
近津薪荼11 分钟前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck12 分钟前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
松☆16 分钟前
CANN与大模型推理:在边缘端高效运行7B参数语言模型的实践指南
人工智能·算法·语言模型
_F_y17 分钟前
C++重点知识总结
java·jvm·c++
java干货26 分钟前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
_F_y26 分钟前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
皮皮哎哟34 分钟前
数据结构:嵌入式常用排序与查找算法精讲
数据结构·算法·排序算法·二分查找·快速排序
程序员清洒43 分钟前
CANN模型剪枝:从敏感度感知到硬件稀疏加速的全链路压缩实战
算法·机器学习·剪枝
vortex51 小时前
几种 dump hash 方式对比分析
算法·哈希算法