[洛谷]B3601 [图论与代数结构 201] 最短路问题_1(负权)(spfa)

news/2024/6/18 23:02:47 标签: 图论, 算法, c++

 

 

 

SPFA模板啦~

直接上ACcode:

#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define inf 2147483647
const int N=15e3+10,M=2*N;
int dis[N],head[N],cnt;
bool vis[N];
int n,m;
struct E {
	int to,w,next;
} e[M];
queue<int>q;
void add(int u,int v,int w) {
	e[++cnt].w=w, e[cnt].next=head[u], e[cnt].to=v, head[u]=cnt;
}
void spfa() {
	for(int i=1; i<=n; i++) dis[i]=inf;//初始化
	q.push(1);
	dis[1]=0;//起点
	vis[1]=true;

	while(!q.empty()) {
		int t=q.front();
		q.pop();
		vis[t]=false;
       for(int i=head[t];i;i=e[i].next){
       	int j=e[i].to;
       	if(dis[j]>dis[t]+e[i].w){
       		dis[j]=dis[t]+e[i].w;
       		if(!vis[j]){
       			vis[j]=true;
       			q.push(j);
			   }
		   }
	   }
	}
}
void solve() {
	cin>>n>>m;
	for(int i=1; i<=m; i++) {
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
	}
	spfa();
	for(int i=1;i<=n;i++){
		if(dis[i]!=inf){
			cout<<dis[i]<<" ";
		}
		else cout<<"-1 ";
	}
}

int main() {

	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);//加速输入输出
	int tt=1;
	//cin>>tt;
	while(tt--) {
		solve();
	}
	return 0;//好习惯
}


over~ 


http://www.niftyadmin.cn/n/1010050.html

相关文章

【C++3】crontab,ftp

文章目录 1.生成数据&#xff1a;crontab2.ftp&#xff1a;ftp是tcp/ip协议族中一员&#xff0c;分客户端和服务端2.1 安装&#xff1a;linux操作系统的用户也是ftp的用户&#xff0c;可以配置专用的ftp用户&#xff0c;专用的ftp用户只能用于ftp&#xff0c;不能登录操作系统2…

Java基础---为什么不能用BigDecimal的equals方法做等值比较

目录 缘由 BigDecimal的比较 BigDecimal的equals原理 为什么标度不同 如何比较BigDecimal 缘由 因为BigDecimal的equals方法和compareTo并不一样equals方法会比较两部分内容&#xff0c;分别是值&#xff08;value&#xff09;和标度&#xff08;scale&#xff09;&#x…

ChatGPT Plugins内幕、源码及案例实战(一)

ChatGPT Plugins内幕、源码及案例实战 6.1 ChatGPT Plugins的工作原理 本节主要跟大家谈ChatGPT的插件(Plugins),这个内容非常重要。现在很多企业级的开发,一般都会基于ChatGPT 插件进行一些服务的封装,相当于开发了一个代理(Agent),把一些服务或者API封装在里面,然后…

jsoncpp

安装jsoncpp sudo yum -y install jsoncpp-devel引入json&#xff0c;包含头文件<jsoncpp/json/json.h> #include <jsoncpp/json/json.h>序列化工作 将结构化的数据&#xff0c;转化为一个字符串&#xff0c;方便我们进行网络发送 Value是一个Json中间类&#xf…

React基础知识点(一)

React基础知识点 目标 能够说出React是什么能够说出React的特点能够掌握React的基本使用能够使用React脚手架 什么是React &#xff08;★★★&#xff09; React是一个用于构建用户界面的javaScript库&#xff0c;起源于facebook的内部项目&#xff0c;后续在13年开源了出…

Go语言并发Goroutine

一、并发性Concurrency 1.1 多任务 怎么来理解多任务呢&#xff1f;其实就是指我们的操作系统可以同时执行多个任务。举个例子&#xff0c;你一边听音乐&#xff0c;一边刷微博&#xff0c;一边聊QQ&#xff0c;一边用Markdown写作业&#xff0c;这就是多任务&#xff0c;至少…

ElasticSearch学习02——Kibana安装

ElasticSearch学习02——Windows下Kibana安装 Kibana是界面化的查询数据的工具&#xff0c;下载时尽量下载与ElasicSearch一致的版本。 1、下载对应版本的Kibana ​ 有了ElasticSearch安装的经验&#xff0c;我们发现了ES和JDK有着版本对应的关系&#xff0c;Kibana和ES共同为…

3、boostrap图片视频上传展示

boostrap图片视频上传展示 1、展示效果2、html代码 1、展示效果 项目目录结构 2、html代码 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--<link rel"st…