东北大学暑期acm夏令营 算法进阶第八天(图论专题)

2023-11-02

部分内容参考:点我


第一题

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,e,a,b,ans;
bool check[15],flag;
vector<int>city[15];
struct point{
	int cityname,step;
}s,j;
void dfs(int fir,int end)
{
	check[fir]=true;
	s.cityname=fir,s.step=0;
	queue<point>q;
	q.push(s);
	while(!q.empty())
	{
		s=q.front();
		if(s.cityname==b)
		{
			ans=s.step;
			flag=true;
		}
		q.pop();
		for(int i=0;i<city[s.cityname].size();++i)
		{
			if(!check[city[s.cityname][i]])
			{
				check[city[s.cityname][i]]=true;
				j.cityname=city[s.cityname][i],j.step=s.step+1;
				q.push(j);
			}
		}
	}
}
int main()
{
	cin>>n>>e;
	while(e--)
	{
		cin>>a>>b;
		city[a].push_back(b);
		city[b].push_back(a);
	}
	cin>>a>>b;
	dfs(a,b);
	if(flag) printf("The length of the shortest path between %d and %d is %d.",a,b,ans);
	else printf("There is no path between %d and %d.",a,b);
} 

第二题(贪心,每次扔出来的最小点一定确定,只能他往别处走优化别处,不能别处来优化他)

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,e,a,ans[20005]; 
struct point{
	int dst,v;
	bool operator <(const point b) const {
        return v>b.v;
	}
}f,g;
vector<point>road[20005];
bool vis[20005];
void dfs(int str)
{
	priority_queue<point>q;
	f.dst=0;
	q.push(f);
	while(!q.empty())
	{
		f=q.top();
		q.pop();
		vis[f.dst]=true;
		for(int i=0;i<road[f.dst].size();i++)
		{
			g.dst=road[f.dst][i].dst;
			if(vis[g.dst])
			{
				continue;
			}
			ans[g.dst]=min(ans[g.dst],ans[f.dst]+road[f.dst][i].v);
			g.v=ans[g.dst];	
			q.push(g);
		}
	}
}
int main()
{
	cin>>n>>e;
	for(int i=1;i<n;i++)
	{
		ans[i]=INT_MAX;
	}
	while(e--)
	{
		cin>>a>>f.dst>>f.v;
		road[a].push_back(f);
	}
	dfs(0);
	bool first=false;
	for(int i=1;i<n;i++)
	{
		if(vis[i])
		{
			cout<<ans[i]<<" ";
		}
	}
}

第三题 (同上)

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,m,s,t,ans[2505],si,ti,w; 
struct point{
	int dst,v;
	bool operator <(const point b) const {
        return v>b.v;
	}
}qt,qs;
bool vis[2505];
vector<point>road[2505];
void dfs(int fir,int end)
{
	ans[fir]=0;
	qt.dst=fir;
	priority_queue<point>q;
	q.push(qt);
	while(!q.empty())
	{
		qt=q.top();
		q.pop();
		if(qt.dst==end)
		{
			return;
		}
		vis[qt.dst]=true;
		for(int i=0;i<road[qt.dst].size();i++)
		{
			qs.dst=road[qt.dst][i].dst;
			if(vis[qs.dst])
			{
				continue;
			}
			ans[qs.dst]=min(ans[qs.dst],ans[qt.dst]+road[qt.dst][i].v);
			qs.v=ans[qs.dst];
			q.push(qs);
		}
	}
}
int main()
{
	cin>>n>>m>>s>>t;
	for(int i=0;i<=n;i++)
	{
		ans[i]=INT_MAX;
	}
	while(m--)
	{
		cin>>si>>ti>>w;
		qt.dst=ti,qt.v=w;
		qs.dst=si,qs.v=w;
		road[si].push_back(qt);
		road[ti].push_back(qs);
	}
	dfs(s,t);
	cout<<ans[t];
}

第四题 (动态规划,不断看到其他点中转能不能更短)

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int ans[51][51],n;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>ans[i][j];
			if(!ans[i][j]&&i!=j)
			{
				ans[i][j]=99999;
			}
		}
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				ans[i][j]=min(ans[i][j],ans[i][k]+ans[k][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(ans[i][j]!=99999)
			{
				cout<<ans[i][j]<<" ";
			}
			else
			{
				cout<<-1<<" ";
			}
		}
		cout<<endl;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

东北大学暑期acm夏令营 算法进阶第八天(图论专题) 的相关文章

  • 场效应三极管及其放大电路(1)MOSFET详解

    目录 MOS管种类 MOS管结构和工作原理 NMOS管增强型结构 NMOS管增强型工作原理 阈值电压VTN和截止区 可变电阻区 恒流区形成 I V特性曲线及特性方程 总结 NMOS耗尽型 与NMOS增强型区别 I V特性曲线及特性方程 总结
  • 如何看懂元器件手册的温升指标

    导语 我们知道半导体对温度很敏感 在元器件手册里经常会看到Thermal Information这一项 它描述的就是半导体器件的一些热学参数 如下图 1 它来自LM7805的手册 今天将讲述这些参数如何使用 图 1 先明白几个概念 热阻 T
  • ASP.NET Core:跨平台Web开发框架

    ASP NET Core是一个免费且开放源代码的Web框架 以及由微软和社区开发的下一代ASP NET 它是一个模块化框架 既可以Windows上的完整 NET Framework上运行 也可以在跨平台 NET Core上运行 该框架是一个

随机推荐

  • 两分钟了解HTTP/1.1 协议中的8种请求方法

    HTTP 1 1 协议中的请求方法 1 GET 用来从服务器上获取数据 指定的资源经服务器端解析后返回响应内容 GET请求的数据会附在URL后面 2 POST 用于发送包含用户提交数据的请求 有可能对服务器的数据进行更改 POST的数据放在
  • VS更改默认打开保存编码gb2312

    File 文件 gt Preferences 首选项 gt Usersettings 设置 搜索 encod 或者 encoding 然后修改为想要的编码格式
  • Modern C++的应用,实现golang中的defer

    modern C 实现 golang 的defer 关于RAII的一些思考 defer 的简介 注 没有 golang 语法基础的读者可以看看 反之 可以跳过 golang语法中的defer是什么 defer用来声明一个延迟函数 把这个函数
  • 学习日记——物可视

    百度云物联网组件图 物可视的数据源可以是物管理 我们的设备可以通过MQTT协议将数据上报给物管理 物管理再将我们上报的数据作为物可视的数据源 我们的设备还可以将数据上报到物接入 之后通过规则引擎来将数据发送给时序数据库 时序数据库再作为物可
  • matlab 绘图 实例,MATLAB 绘图实例

    代码 图片 环境 matlab r2012b 1 在0 x 2 区间内 绘制曲线 y 2e 0 5xcos 4 x 代码 x 0 pi 100 2 pi y 2 exp 0 5 x cos 4 pi x plot x y 作图 2 向量乘积
  • Linux 中 $符号是什么意思,代表什么含义

    一 在linux里是用来给变量命令的 例如 JAVA HOME 是指JAVA HOME的环境变量 echo JAVA HOME 可以在linux终端输出jdk的home目录 在Shell 脚本中向脚本传递参数也会用到 在使用变量时 要在变量
  • 机器学习与深度学习基础概念

    作者简介 大数据专业硕士在读 CSDN人工智能领域博客专家 阿里云专家博主 专注大数据与人工智能知识分享 公众号 GoAI的学习小屋 免费分享书籍 简历 导图等资料 更有交流群分享AI和大数据 加群方式公众号回复 加群 或 点击链接 专栏推
  • 本人小白,希望各位大佬帮帮我。python安装后没法用我又重新安装就重新 <no Python frame>,怎么办

  • java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

    今天在使用JDK 12 0 环境下使用Hibernate 时候出现了这个错误 错误日志如下 2020 02 06 11 52 48 790 ERROR 3368 nio 8081 exec 1 o a c c C dispatcherSer
  • 无法解析的外部符号的几种可能(lib方面的)

    无法解析的外部符号的几种可能 1 lib 文件未引入 可使用 pragma comment lib winsock lib 语句添加 lib 引用 也可在项目依赖里添加 2 类方法的实现未加类标识 如 CTest Connect void
  • Dialog的IDE搭建systermView的方法步骤(DA1469X)

    1 背景 SystemView 是一个可以在线调试嵌入式系统的工具 它可以分析有哪些中断 任务执行了 以及这些中断 任务执行的先后关系 还可以查看一些内核对象持有和释放的时间点 比如信号量 互斥量 事件 消息队列等 这在开发和处理具有多个线
  • 【Linux】Linux 生成证书 keytool 命令找不到

    用Openssl生成证书 后来要涉及生成 java keytool 的 jks格式的证书 结果输入keytool bash keytool command not found 结果找了半天才发现javahome都没设置 也是郁闷 希望对遇到
  • Java EnumMap remove()方法具有什么功能呢?

    转自 Java EnumMap remove 方法具有什么功能呢 下文笔者将讲述EnumMap中remove方法的功能简介说明 如下所示 EnumMap类remove 方法的功能 用于删除指定的元素 并返回删除的元素 如果返回null 则代
  • js,jq

    定时器
  • 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现 利用rsync结合cron计划任务实现 rsync av delete data 10 0 0 12 back a 保留文件属性 v 显示过程 delete 如果源文件没有的 目标文件里面有 就把目标文件里面的删除掉 文
  • Qt Creator设置黑色主题背景

    黑色的主题看起来比较炫酷一点 也有人说黑色主题用起来对眼睛好 不过个人感觉然并卵 根据自己的习惯爱好设置就好 如果想保护眼睛 还是将屏幕调到合适的亮度 不要太暗 自己眼睛觉得舒服最好 也可以通过 桌面右击 个性化 高级 来设置窗口 桌面等的
  • Docker全攻略(二)Docker配置国内免费registry mirror

    一 Docker加速器简介 Docker加速器是 DaoCloud 推出的 Docker Hub Mirror 服务的官方名称 Docker加速器提供Docker Registry Docker Hub 在中国的镜像代理服务 为中国用户在国
  • 能够快速完成任务的方法有几点

    1 思路清晰 在写之前把步骤都想清楚了 2 在代码中 写伪代码 3 熟练使用快捷键 并生成自己的快捷键 4 熟悉各种插件 5 最重要的多敲 每种套路多敲几遍 当用的时候就孰能生巧了
  • 八皇后问题(Java代码实现)

    什么是八皇后问题 八皇后问题 是一个古老而著名的问题 是回溯算法的典型案例 该问题是国际西洋棋棋手马克斯 贝瑟尔于1848年提出 在8 8格的国际象棋上摆放八个皇后 使其不能互相攻击 即 任意两个皇后都不能处于同一行 同一列或同一斜线上 问
  • 东北大学暑期acm夏令营 算法进阶第八天(图论专题)

    部分内容参考 点我 第一题 include