1. 首页
  2. 评测记录
  1. 登录
  2. 注册
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

谢梓睿

UID: 63, 注册于 2024-5-18 19:27:36, 最后登录于 2025-10-7 9:52:58, 最后活动于 2025-12-13 20:29:57.

解决了 412 道题目,RP: 260.84 (No. 34)

♂
  • 个人简介

    image

    加载中...

    image

    Bellman-Ford算法模板

    #include<iostream>
    using namespace std;
    const int INF = 1e9;
    int dist[1005];
    
    struct edge
    {
        int u, v, w; // u:起点 v:终点 w:权值
    };
    
    edge edges[100005];
    int main()
    {
        int n,m;
        cin >> n >> m;
        for(int i = 0; i < m; i++)
        {
            cin >> edges[i].u >> edges[i].v >> edges[i].w;
        }  
    
        for(int i = 1; i <= n; i++)
        {
            dist[i]=INF;
        }
    
        dist[1] = 0; //起点为1,到自身距离为0
    
        // Bellman-Ford 主循环
        // 进行 n-1 轮松弛操作
        for(int i = 1; i <= n-1; i++)
        {
            // 遍历每条边,尝试用边更新最短距离
            for(int j = 0; j < m; j++)
            {
                int u = edges[j].u;
                int v = edges[j].v;
                int w = edges[j].w;
                // 如果起点 u 可达,并且经过边 u->v 可以让 v 更近,就更新
                if(dist[u]!=INF && dist[v] > dist[u]+w)
                {
                    dist[v] = dist[u] + w;
                }
            }
        }
    
        for(int i = 1; i <= n; i++)
        {
            if(dist[i]==INF)
            {
                cout << "INF"; // 如果不可达,输出 INF
            }
            else
            {
                cout << dist[i] << " "; // 否则输出最短距离
            }
        }
        return 0;
    }
    

    SPFA算法

    #include <iostream>
    #include <queue>
    #include <vector>
    using namespace std;
    
    struct Edge
    {
        int to,w;
    };
    
    const int INF = 1e9;
    vector<Edge> adj[1005];
    int dist[1005];
    bool vis[1005];
    int cnt[1005];   //记录每个节点被入队的次数,用于检测负权回路
    int n,m;
    
    int main() 
    {
        cin >> n >> m;
        for(int i = 1; i <= m; i++)
        {
            int u,v,w;
            cin >> u >> v >> w;
            adj[u].push_back({v,w});
        }
    
        for(int i = 1; i <= n; i++)
        {
            dist[i] = INF;
            vis[i] = false;
            cnt[i] = 0;   // 初始化计数器
        }
    
        queue<int> q;
        dist[1] = 0;
        q.push(1);
        vis[1] = true;
        cnt[1] = 1;       // 起点入队次数记为 1
    
        while(!q.empty())
        {
            int u = q.front();
            q.pop();
            vis[u] = false;
    
            for(int i = 0; i < adj[u].size(); i++)
            {
                int v = adj[u][i].to;
                int w = adj[u][i].w;
    
                if(dist[v] > dist[u] + w)
                {
                    dist[v] = dist[u] + w;
    
                    if(!vis[v])
                    {
                        q.push(v);
                        vis[v] = true;
                        cnt[v]++;  // 节点 v 第一次/再次入队,次数加 1
    
                        // 如果某个点被入队超过 n 次,则一定有负权回路
                        if(cnt[v] >= n)
                        {
                            cout << "circle";
                            return 0;
                        }
                    }
                }
            }
        } 
    
        for(int i = 1; i <= n; i++)
        {
            if(dist[i]==INF)
            {
                cout << INF << " ";
            }
            else
            {
                cout << dist[i] << " ";
            }
        }
        return 0;
    }
    
  • 最近活动

    • 噢猴和唔狐的困扰 IOI
    • 2025年CSP集训小测-20250813 IOI
    • 0101-蓝桥杯集训模拟赛002 ACM/ICPC
    • 十五届蓝桥杯省赛C++组 ACM/ICPC
    • 0101-蓝桥杯集训模拟赛001 ACM/ICPC
    • 0101-C++基础测试(开放测试ing...) ACM/ICPC
    • 2025 NOIP福建集训 0101摸底资格赛 IOI
    • 722 作业
    • 2025年CSP集训小测-20250728 IOI
    • 2025年CSP集训小测-20250727 IOI
    • 2025年CSP集训小测-20250725 IOI
    • 2025年CSP集训小测-20250723 IOI
    • 20250718+名城 作业
    • 2025年 0101第二季度高阶考试 ACM/ICPC
    • 算法班小测 ACM/ICPC
    • 进阶班小测2 ACM/ICPC
    • 2025年 0101第一季度高阶月考 OI
    • 阶段性测试+高阶 OI
    • 2024 CPS第二轮-模拟赛第六天 OI
    • 2024 CPS第二轮-模拟赛第四天 OI
    • 2024 CPS第二轮-模拟赛第三天 OI
    • 2024 CPS第二轮-模拟赛第二天 IOI
    • 2024 CPS第二轮-模拟赛第一天 IOI
    • 集训小测-20240727 OI
    • 集训小测-20240726 OI
    • 集训小测-20240725 OI
    • 进阶-20240724 作业
    • 进阶-20240723 作业
    • 进阶-20240722 作业
    • 2024-7-21 作业
477
已递交
412
已通过
0
题解被赞

状态

  • 评测队列
  • 服务状态
  1. 关于
  2. 联系我们
  3. 隐私
  4. 服务条款
  5. 版权申诉
  6. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  7. 兼容模式
  8. 主题
    1. 亮色
    2. 暗色
  1. Worker 0, 68ms

还没有账户?

注册一个 0101编程OJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。

现在注册
关闭

登录

使用您的 0101编程OJ 通用账户

忘记密码或者用户名?