修改密码

全面备考2025 CSP-J 初赛 & 复赛直播课

更新中

陈远龙老师主讲 & 答疑

课程题单 - T1005

未购买 · 可先试学24节课

课程目录展开/折叠

第4课 CSP-J大纲知识专题&初赛真题精讲

视频时长:50:45
播放快捷键

播放/暂停:空格(或鼠标单击)      全屏:F(或鼠标双击)      退出全屏:Esc

快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→

快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←

本节课讲解配套PPT&板书:

本节课讲解到的源代码

源代码下载:第4课 CSP-J大纲知识专题&初赛真题精讲-源代码下载

1. 图-邻接表-list-1
#include <bits/stdc++.h>
using namespace std;

char data[] = "ABCD";
struct Edge {
    int to;
    int w;
};

const int M = 1000;
const int N = 100;

list<Edge> g[N];

void addEdge(int u, int v)
{
    g[u].push_back({v, 1});
}

bool vis[N];
void dfs(int u)
{
    cout << data[u] << ' ';
    vis[u] = true;
    for (auto it = g[u].begin(); it != g[u].end(); it ++)
    {
        if (!vis[it->to])
            dfs(it->to);
    }
}

bool inq[N];
void bfs(int u)
{
    queue<int> q;
    q.push(u);
    inq[u] = true;

    while (!q.empty())
    {
        int u1 = q.front();
        q.pop();
        cout << data[u1] << ' ';
        for (auto it = g[u1].begin(); it != g[u1].end(); it ++)
        {
            if (!inq[it->to])
            {
                q.push(it->to);
                inq[it->to] = true;
            }
        }
    }
}

int main()
{
    addEdge(0, 1);
    addEdge(0, 3);

    addEdge(1, 0);
    addEdge(1, 2);
    addEdge(1, 3);

    addEdge(2, 1);
    addEdge(2, 3);

    addEdge(3, 0);
    addEdge(3, 1);
    addEdge(3, 2);

    // 打印邻接表

    for (int u = 0; u < 4; u ++)
    {
        // 遍历链表 g[u]
        cout << u << "->";
        for (auto it = g[u].begin(); it != g[u].end(); it ++)
        {
            cout << it->to << ' ';
        }
        cout << endl;
    }

    dfs(0); // A B C D
    cout << endl;
    bfs(0); // A B D C

    return 0;
}
本节课无课后练习

本节课答疑

建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习

陈远龙老师视频讲解:如何使用DeepSeek进行答疑?

通过AI未能获得满意解答的,可以联系陈远龙老师答疑

目录