题目链接:【模板】单源最短路径(弱化版) - 洛谷

- #include
- using namespace std;
- #define INF 2147483647
- int n,m,s,a,b,c;
- const int N=100010;
- struct edge{int v,w;};//终点和边权
- vector
e[N]; - int d[N],vis[N];
-
- void dijkstra(int s){
- for(int i=0;i<=n;i++){
- d[i]=INF;//初始化所有点到原点距离为无穷大
- }
- d[s]=0;//到自身距离为0
- for(int i=1;i
//枚举次数n-1次 - int u=0;
- for(int j=1;j<=n;j++){//枚举n个点
- if(!vis[j]&&d[j]
//找到距离最短的点 - }
- vis[u]=1;//标记当前距离最短的点出圈
- for(auto ed:e[u]){//枚举当前点的所有邻边
- int v=ed.v,w=ed.w;
- if(d[v]>d[u]+w){//三角形松弛操作
- d[v]=d[u]+w;
- }
- }
- }
- }
- int main(){
- cin>>n>>m>>s;
- for(int i=0;i
- cin>>a>>b>>c;
- e[a].push_back({b,c});//a到b边权为c
- }
- dijkstra(s);
- for(int i=1;i<=n;i++){
- printf("%d ",d[i]);
- }
- return 0;
- }



- #include
- using namespace std;
- const int N=100010;
- int n,m,s,a,b,c;
- struct edge{int v,w;};
- vector
e[N]; - int d[N],vis[N];
- void dijkstra(int s){
- memset(d,0x3f,sizeof d);d[s]=0;
- priority_queue
int,int>>q; - q.push({0,s});
- while(q.size()){
- auto t=q.top();q.pop();
- int u=t.second;
- if(vis[u])continue;//已经出队的就跳过
- vis[u]=1;//出队标记
- for(auto ed:e[u]){
- int v=ed.v,w=ed.w;
- if(d[v]>d[u]+w){
- d[v]=d[u]+w;
- q.push({-d[v],v});//加上负号大根堆等价于小根堆
- }
- }
- }
- }
- int main(){
- cin>>n>>m>>s;
- for(int i=0;i
- cin>>a>>b>>c,e[a].push_back({b,c});
- }
- dijkstra(s);
- for(int i=1;i<=n;i++)printf("%d ",d[i]);
- return 0;
- }


-
相关阅读:
京东 java 研发岗二面:Tomcat 是如何做到热加载和热部署的?
SpringBoot使用redis解决分页查询大量数据慢的情况
BathchData数据分批处理
【Vue 快速入门系列】更新数据页面不渲染问题
时间序列预测:用电量预测 02 KNN(K邻近算法)
Job 和 DaemonSet
蓝桥杯算法心得——拼数(排列型回溯dfs)
好用到爆,GitHub 星标 32.5k+的命令行软件管理神器,功能真强大
[iOS]-weak底层原理(sidetable相关,附带引用计数原理)
python经典百题之画椭圆
-
原文地址:https://blog.csdn.net/lmessi10_/article/details/136243195