首页 > 其他分享 >【SSL 1588】猜道路(图论)

【SSL 1588】猜道路(图论)

时间:2022-11-17 21:25:46浏览次数:77  
标签:1588 int ll 图论 long SSL include

猜道路

题目链接:SSL 1588

题目大意

给你 n 个点之间的最短路径,要你找到原来图上路径的总长度最短可以是多少,如果没有满足的图则输出 -1。

思路

首先至于判断满足这个很简单,因为只有图是满足是最短路的一定能构造。
所以你只需要判一下是否存在 \(a_{i,j}>a_{i,k}+a-{k,j}\) 这样的不合法情况即可。

那考虑构造,会发现其实生成树并不对,因为你完全没必要走树上的,可以开一条捷径之类的。
所以我们考虑一个条边怎样才不需要。
那就是它可以被替代,也就是存在 \(a_{i,k}+a_{k,j}=a_{i,j}\) 的时候,\(a_{i,j}\) 就不被需要了。

那你把剩下需要的边的边权加起来,就是答案了。

代码

#include<cstdio>
#include<algorithm>
#define ll long long 

using namespace std;

const int N = 305;
int n, a[N][N], fa[N];

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) {
			scanf("%d", &a[i][j]);
		}
	
	for (int k = 1; k <= n; k++)
		for (int i = 1; i <= n; i++)
			for (int j = 1; j <= n; j++)
				if (i != j && i != k && j != k) {
					if (a[i][j] > a[i][k] + a[k][j]) {
						printf("-1"); return 0;
					}
				}
	
	ll ans = 0;
	for (int i = 1; i <= n; i++)
		for (int j = i + 1; j <= n; j++)
			if (i != j) {
				bool in = 1;
				for (int k = 1; k <= n; k++) if (k != i && k != j)
					if (a[i][j] == a[i][k] + a[k][j]) {
						in = 0; break;
					}
				if (in) ans += a[i][j];
			}
	printf("%lld", ans);
	
	return 0;
}

标签:1588,int,ll,图论,long,SSL,include
From: https://www.cnblogs.com/Sakura-TJH/p/SSL_1588.html

相关文章

  • Java Tomcat 配置SSL证书
    Java项目部署到阿里服务器后,因为是给微信小程序提供后台接口,小程序要求使用Https。所以需要为Tomcat配置SSL证书,将流程记录此。1.到阿里服务器下载免费的SSL证书(Tomcat)......
  • 图论
    图论 最短路 dijkstra时间复杂度:N^2 堆优化版的就是优化找最小距离点时间复杂度:M*logN特点:不允许存在负权边算法原理:用最短距离去更新n个点的距离(实际有效更......
  • 图论
    图论CF76AGift思路因为有两个变量,所以先按照其中一个\(g\)排序,就像图海说的两只鸟先拍死一个再说。设生成树边集为\(T\),将排序后的边\(i\)加入时,\(g_{max}\)......
  • 在内网部署支持ssl的docker私仓
    目录registry更换来此加密ssl证书生效配置修改配置文件从114缓存查询数据可以dig无法ping查看已经区域解析,并添加新的解析项在linux安装局域网certrn......
  • 图论做题记录
    CF242D题意:初始有一个\(n\)个点的图,依次添加\(m\)条边,对每次加边后需要回答满足每个点的度数都大于等于\(k\)的导出子图的最大点数。考虑将加边操作改为删边操作,关......
  • [图论]floyd统计最小环个数
    使用floyd可以求解最小环问题.单纯需要求出最小环长度,方法显而易见最小环-OIWiki(oi-wiki.org)然而,如果需要统计最小环的个数,就比较麻烦.记\(cnt_{i,j}\)表示从\(i......
  • Qt中openssl配置,提示OPENSSL_Applink错误(程序异常退出错误)
    首先在QTcreater创建的QT工程中配置静态库和头文件1、LIBS+=-L"E:\OpenSSL-Win32\lib"-llibcryptoLIBS+=-L"E:\OpenSSL-Win32\lib"-llibsslINCLUDEPATH+=$$quote......
  • vue跨域2.x,3.x跨域,nginx跨域,nginx+域名+ssl证书配置
    vue跨域2.x文件位置config---》index.js---》大约13行---》跨域内容proxyTable:{'/api':{target:'http://192.168.0.125:8000/info',//跨域地址changeOrigin:t......
  • 002-STM32F407+EC200基本控制篇(阿里云物联网平台)-STM32F407+EC200使用MQTT+SSL加密
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTE_STM32F407/EC200/aliyun.html"frameborder="0"scrolling="auto"width="100%"height="1500"><......
  • 部署apache2并实现ssl自动跳转
    部署apache2并实现ssl自动跳转1.YUM安装我这里为了快速部署直接使用YUM安装[root@ip-172-31-5-103~]#yuminstallhttpd-y2.路径httpd解释/etc/http......