-
个人简介

加载中...


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 作业