首页 > 其他分享 >F - Teleporter Setting(建立虚点)

F - Teleporter Setting(建立虚点)

时间:2024-01-17 23:00:31浏览次数:31  
标签:Teleporter int define vis Setting 虚点 ans include fo

F - Teleporter Setting

题意:
给出n个顶点和一些边,其中一些边两个端点确定,另一些边只有一个端点确定,对于每个i,令其为所有这些不确定的边的另一个端点,问1到n的最短距离是多少。

建立一个虚点,然后f,g分别表示1,n到x的最短距离,
分别计算两种经过i的情况,以及可能不经过i的情况即可。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<bitset>
#include<cmath>
#include<set>
#include<unordered_map>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (ll (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define A puts("Yes")
#define B puts("No")
using namespace std;
typedef double db;
typedef long long ll;
//typedef __int128 i128;
const int N=3e5+10;
//const int S=1e5+5;
//const int inf=1ll<<60;
const int inf=1<<29;
const ll mo=1e9+7;
vector<int> e[N];
int n,m,f[N],g[N],x,y;
queue<int> q;
bool vis[N];
void bfs(int s,int *d){
	fo(i,1,n+1)	d[i]=inf;
	memset(vis,0,sizeof(vis));
	
	vis[s]=1;
	d[s]=0;
	q.push(s);
	while (!q.empty()) {
		x=q.front(); q.pop();
		for (int v:e[x]) {
			d[v]=min(d[v], d[x]+1);
			if (!vis[v]) {
				vis[v]=1;
				q.push(v);
			}
		}
	}
}
int main()
{
//	freopen("data.in","r",stdin);
	
	scanf("%d %d",&n,&m);
	fo(i,1,m) {
		scanf("%d %d",&x,&y);
		if (!x) x=n+1;
		e[x].emplace_back(y);
		e[y].emplace_back(x);
	}
	
	bfs(1, f);
	bfs(n, g);
	
	fo(i,1,n) {
		int ans=min(f[i]+g[n+1], f[n+1]+g[i]);
		ans=min(ans, f[n]);
		printf("%d ",ans<n ? ans:-1);
	}
	
	return 0;
}

	
 
 

标签:Teleporter,int,define,vis,Setting,虚点,ans,include,fo
From: https://www.cnblogs.com/ganking/p/17971407

相关文章

  • ASP.NET Core 6(.NET 6) Program.cs中使用读取appsettings.json配置文件
    ​ 在ASP.NETCore6(.NET6)中,可以使用Json格式的appsettings.json配置文件来配置应用程序,用于存储应用程序的配置信息,方便我们灵活的配置应用程序。本文主要介绍Program.cs中,使用读取appsettings.json配置文件的方法,以及相关的示例代码。1、通过配置实体类的方式1)配置实体......
  • 在 PyCharm 中编写 Vue 项目,你可以按照以下步骤进行: 1. **安装 Vue.js 插件**:在 PyCh
    在PyCharm中编写Vue项目,你可以按照以下步骤进行:1.**安装Vue.js插件**:在PyCharm中,选择`File->Settings…->Plugins`,搜索Vue并点击安装,安装后重启PyCharm¹²。2.**设置JavaScript**:支持Vue语法,选择`File->Settings…->Languages&Frameworks->JavaSc......
  • .NET 6 控制台程序(Console)读取配置appsettings.json配置文件
    ​ 1、添加引用Microsoft.Extensions.Configuration.Json添加引用 Microsoft.Extensions.Configuration.Json,引用方法可以参考:1)使用Nuget界面管理器搜索"Microsoft.Extensions.Configuration.Json"在列表中分别找到它,点击"安装"相关文档:VS(VisualStudio)中Nuget的使用......
  • 【Django】加密 settings.py文件中的数据库密码
    1.使用fromcryptography.fernetimportFernet第三方库pip3installcryptography2.Fernet的使用fromcryptography.fernetimportFernet#生成加密密钥key=Fernet.generate_key()#创建Fernet对象fernet=Fernet(key)#要加密的原始数据message=b"Hell......
  • vscode settings.json
    {"workbench.startupEditor":"none","workbench.iconTheme":"vscode-icons","workbench.colorTheme":"Dracula","window.title":"${rootName}${separator}${profileName}",......
  • ElasticSearch之Node query cache settings
    对于filter查询,ElasticSearch提供了缓存查询结果的特性,当缓存中存在满足查询条件要求的数据时,直接从缓存中提取查询结果。对于ElasticSearch节点,该节点上的所有shard共享同一个缓存区域。ElasticSearch基于LRU算法来管理缓存中的数据,当空间不足以承载最新的查询操作的结果时,使用......
  • [QOJ1359] Setting Maps
    题目链接\(k=1\)的时候显然是最小割。把一个点\(u\)拆成两个点,中间连流量为\(c_u\)的边。那么考虑扩展到\(k\)更大的情况。把上图的每个入点和出点都拆成\(k\)个。把节点\(u\)第\(i\)层入点和第\(i+1\)层入点连接,再把第\(i\)层入点和所有满足\(j>i\)层的出......
  • maven 配置(cmd 黑窗口执行 mvn 时默认的 settings 文件和 idea maven 相关配置)
    写在前面:本文章用于记录博主平时遇到的问题,步骤略粗糙,目的在于记录一边后续博主自己查找,如果能帮助到其他人更好。文章中用到的链接均为自行引入,侵删,谢谢(2I2Rc*@JY8)问题说明:在一次使用cmdmvn命令通过下载到本地的第三方jar包(ojdbc8.jar)创建本地maven仓库的文件结构时发现......
  • Redis报错:WARNING: The TCP backlog setting of 511 cannot be enforced because /pro
    报错内容:1:C08Dec202305:47:33.348#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo1:C08Dec202305:47:33.348#Redisversion=7.0.5,bits=64,commit=00000000,modified=0,pid=1,juststarted1:C08Dec202305:47:33.348#Configurationloaded1:M08De......
  • mybatis解析settings标签
    settings标签也是一个很重要的标签,虽然我们在使用的时候,没怎么配置settings标签里面的内容。好像一开始为了看sql语句,我们在settings标签里面配置了日志。<settings><settingname="logImpl"value="SLF4J"/></settings>其他的好像就没干什么了。其实settings标签......