当前位置: 首页 > news >正文

图论

图论板子

Dijkstra

P4779 【模板】单源最短路径(标准版)

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,M=2e5+5;
int n,m,s,cnt,hd[N],nxt[M],to[M],w[M],dis[N];
bool vis[N];
struct node{int id,d;node(int a,int b):id(a),d(b){}
};
bool operator <(node a,node b){return a.d>b.d;
}
void add(int a,int b,int c){nxt[++cnt]=hd[a];hd[a]=cnt;to[cnt]=b;w[cnt]=c;
}
void dij(int s){priority_queue<node>q;memset(dis,0x3f,sizeof(dis));dis[s]=0;q.push(node(s,0));while(!q.empty()){node p=q.top();q.pop();if(vis[p.id]) continue;vis[p.id]=true;for(int i=hd[p.id];i;i=nxt[i]){int v=to[i];if(p.d+w[i]<dis[v]){dis[v]=p.d+w[i];q.push(node(v,dis[v]));}}} 
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie();cin>>n>>m>>s;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c);}dij(s);for(int i=1;i<=n;i++) cout<<dis[i]<<" ";return 0;
} 

Spfa

P3385 【模板】负环

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N=2005,M=3005;
int T,n,m,cnt,hd[N],nxt[M<<1],to[M<<1],w[M<<1],dis[N],cnts[N];
bool vis[N];
void add(int a,int b,int c){nxt[++cnt]=hd[a];hd[a]=cnt;to[cnt]=b;w[cnt]=c;
}
bool spfa(){memset(dis,0x3f,sizeof(dis));memset(vis,0,sizeof(vis));queue<int>q;q.push(1);dis[1]=0;vis[1]=true;while(!q.empty()){int u=q.front();q.pop();vis[u]=false;for(int i=hd[u];i;i=nxt[i]){int v=to[i];if(dis[u]+w[i]<dis[v]){dis[v]=dis[u]+w[i];if(vis[v]) continue;vis[v]=true;if(++cnts[v]>n) return true;q.push(v);}}}return false;
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>T;while(T--){cnt=0;memset(hd,0,sizeof(hd));memset(cnts,0,sizeof(cnts));cin>>n>>m;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c);if(c>=0) add(b,a,c);}if(spfa()) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

Floyd

B3611 【模板】传递闭包

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N=105;
int n,f[N][N];
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>f[i][j];}}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){f[i][j]|=f[i][k]&f[k][j];}} } for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<f[i][j]<<" ";}cout<<endl;}return 0;
}

差分约束

P5960 【模板】差分约束

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n,m,cnt,hd[N],nxt[N<<1],to[N<<1],w[N<<1],dis[N],cnts[N];
bool vis[N];
void add(int a,int b,int c){nxt[++cnt]=hd[a];hd[a]=cnt;to[cnt]=b;w[cnt]=c;
} 
void spfa(int s){memset(dis,0x3f,sizeof(dis));dis[s]=0;queue<int>q;q.push(s);vis[s]=true;while(!q.empty()){int u=q.front();q.pop();vis[u]=false;for(int i=hd[u];i;i=nxt[i]){int v=to[i];if(dis[u]+w[i]<dis[v]){dis[v]=dis[u]+w[i];if(vis[v]) continue;vis[v]=true;if(++cnts[v]>n+1){cout<<"NO";exit(0);}q.push(v);}} } 
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;add(b,a,c);}for(int i=1;i<=n;i++) add(n+1,i,0);spfa(n+1);for(int i=1;i<=n;i++) cout<<dis[i]<<" ";return 0;
}

同余最短路

P3403 跳楼机

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int cnt,hd[N],nxt[N<<1],to[N<<1];
ll h,x,y,z,w[N<<1],dis[N];
bool vis[N];
struct node{int id;ll d;node(int a,ll b):id(a),d(b){}
};
bool operator <(node a,node b){return a.d>b.d;
}
void add(int a,int b,ll c){nxt[++cnt]=hd[a];hd[a]=cnt;to[cnt]=b;w[cnt]=c;
}
void dij(){priority_queue<node>q;memset(dis,0x3f,sizeof(dis));dis[0]=0;q.push(node(0,0));while(!q.empty()){node p=q.top();q.pop();if(vis[p.id]) continue;vis[p.id]=true;for(int i=hd[p.id];i;i=nxt[i]){int v=to[i];if(p.d+w[i]<dis[v]){dis[v]=p.d+w[i];q.push(node(v,dis[v]));}}} 
}
int main(){cin>>h>>x>>y>>z;h--;for(int i=0;i<x;i++){add(i,(i+y)%x,y);add(i,(i+z)%x,z);}dij();ll ans=0;for(int i=0;i<x;i++) if(h>=dis[i])  ans+=(h-dis[i])/x+1;cout<<ans;return 0;
} 

Toposort

B3644 【模板】拓扑排序 / 家谱树

#include<bits/stdc++.h>
using namespace std;
const int N=105,M=1e4+5;
int n,m,cnt,hd[N],nxt[M],to[M],w[M],d[N];
void add(int a,int b){nxt[++cnt]=hd[a];hd[a]=cnt;to[cnt]=b;d[b]++;
}
void Toposort(int s){queue<int>q;q.push(s);while(!q.empty()){int u=q.front();q.pop();if(u!=n+1) cout<<u<<" ";for(int i=hd[u];i;i=nxt[i]){int v=to[i];if(--d[v]==0) q.push(v);}}
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++){int k;while(1){cin>>k;if(!k) break;add(i,k);}}int S=n+1;for(int i=1;i<=n;i++) if(!d[i]) add(S,i);Toposort(S);return 0;
}

Kruskal

P3366 【模板】最小生成树

#include<bits/stdc++.h>
using namespace std;
const int N=5005,M=2e5+5;
int n,m,f[N],sz[N];
struct edge{int u,v,w;
}e[M];
bool cmp(edge a,edge b){return a.w<b.w;
}
int find(int k){if(f[k]!=k) f[k]=find(f[k]);return f[k];
}
int union1(int a,int b){int fa=find(a),fb=find(b);if(fa==fb) return -1;if(sz[fa]>sz[fb]){sz[fa]+=sz[fb];f[fb]=fa;return sz[fa];}else{sz[fb]+=sz[fa];f[fa]=fb;return sz[fb];}
}
void K(){int res=0;for(int i=1;i<=n;i++) f[i]=i,sz[i]=1;sort(e+1,e+1+m,cmp);for(int i=1;i<=m;i++){int u=e[i].u,v=e[i].v;int z=union1(u,v);if(z==-1) continue;res+=e[i].w;if(z==n){cout<<res;return;}}cout<<"orz";
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=m;i++) cin>>e[i].u>>e[i].v>>e[i].w;K();return 0;
}
http://www.gsyq.cn/news/123043.html

相关文章:

  • Python - dataclass
  • 云计算与边缘计算:未来数字化转型的关键驱动力 - 实践
  • 文献可视化分析期末复习与应用研究:基于知识图谱的核心概念与实践方法探讨
  • SIGSEGV段错误排查全攻略
  • AI元人文构想的理论构建过程与深层意义分析(二)
  • C++输入输出(cin和cout)的用法
  • 实用指南:LeetCode算法日记 - Day 107: 最长重复子数组
  • 【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体
  • 三菱PLC与组态王打造饮料自动装箱机控制系统
  • 【Nature Communications‘24‘06】预训练多模态大语言模型经过 SkinGPT-4 提升皮肤病学诊断能力
  • 品牌营销战略策划公司选哪家靠谱?奇正沐古 - 资讯焦点
  • 幻方的 “已知” 与 “未知”:三阶唯一解、多阶构造及未解之谜
  • 宪法守护童年:向霸凌和诈骗说“不” - 资讯焦点
  • Neo4j启动
  • 2025年郑州头部吊顶式空调机组设计多少钱,空气幕/表冷器/卧式暗装风机盘管/吊顶式空调机组/工业暖风机吊顶式空调机组采购找哪家 - 品牌推荐师
  • 2025年嘉兴排行前列的卧式暗装风机盘管采购多少钱,卡式风机盘管/吊顶式空调机组/空气幕/消防排烟防火阀卧式暗装风机盘管采购怎么选择 - 品牌推荐师
  • 无代码解决方案:解锁数字化转型的普惠路径
  • Oracle索引技术:理论与实操全解析
  • 深入理解Golang并发模型与CSP理论
  • 23、Samba使用与SSL配置全解析
  • 人工智能如何改变 Anthropic 的工作方式
  • 代码之恋(第十四篇:分叉的路径与意外的Push)
  • SpringSecurity授权原理与实战
  • 告别API碎片化!用AI Ping获取MiniMax-M2、GLM-4.6与Kimi-K2
  • 100G双光口网卡技术解析:Intel E810-CAM2方案的性能与应用突破
  • 2025.12.18博客
  • 刚刚,Gemini 3 Flash 正式上线!位置稳居第一!
  • 2025年杨浦服务好的宠物医院哪家靠谱推荐,母狗绝育/猫咪绝育/狗狗绝育/宠物绝育/宠物体检/宠物内科/宠物皮肤科/宠物医院宠物医院最好的 - 品牌推荐师
  • 构筑测试事业的北极星——软件测试愿景制定指南
  • 基于红外图像的弹道导弹弹道段轨迹估计