D. Shortest Cycle
A[i]&A[j]!=0连边,
求图中最小环
N>128 时必有3环
其他暴力跑
folyd最小环
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define sc(x) scanf("%I64d",&x);
#define read(A) for(int i=0;i<n;i++) scanf("%I64d",&A[i]);
ll A[];
ll B[][];
ll dis[][];
ll N;
#define inf 1e18
ll floyd()
{
ll MinCost = inf;
for(int k=; k<=N; k++)
{
for(int i=; i<k; i++)
for(int j=i+; j<k; j++)
MinCost = min(MinCost,dis[i][j]+B[i][k]+B[k][j]);
for(int i=; i<=N; i++)
for(int j=; j<=N; j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
if(MinCost==inf)return -;
else return MinCost;
} int main()
{
// ll N;
sc(N);
ll _k=;
for(int i=; i<=N; i++)
{
sc(A[_k]);
if(A[_k]!=)_k++;
}
if(_k>=)
{
puts("");
} else
{
N=_k-;
for(int i=; i<=N; i++)
{
for(int j=; j<=N; j++)
{
if(i!=j&&(A[i]&A[j]))
{
B[i][j]=;
dis[i][j]=;
}
else if(i==j)
{
B[i][j]=;
dis[i][j]=;
}
else
{
B[i][j]=inf;
dis[i][j]=inf;
}
}
}
cout<<floyd()<<'\n'; } }
D. Shortest Cycle的更多相关文章
- CF 1206D - Shortest Cycle Floyd求最小环
Shortest Cycle 题意 有n(n <= 100000)个数字,两个数字间取&运算结果大于0的话连一条边.问图中的最小环. 思路 可以发现当非0数的个数很大,比如大于200时, ...
- Codeforces 1206 D - Shortest Cycle
D - Shortest Cycle 思路:n大于某个值肯定有个三元环,否则floyd找最小环. 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) ...
- D. Shortest Cycle(floyd最小环)
D. Shortest Cycle time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- [Codeforces 1205B]Shortest Cycle(最小环)
[Codeforces 1205B]Shortest Cycle(最小环) 题面 给出n个正整数\(a_i\),若\(a_i \& a_j \neq 0\),则连边\((i,j)\)(注意i- ...
- Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)
You are given nn integer numbers a1,a2,…,ana1,a2,…,an. Consider graph on nn nodes, in which nodes ii ...
- 并不对劲的复健训练-CF1205B Shortest Cycle
题目大意 有\(n\)(\(n\leq 10^5\))个数\(a_1,...,a_n\)(\(a\leq 10^{18}\)).有一个图用这个方法生成:若\(a_i\)按位与\(a_j\)不为0,则在 ...
- 【题解】Shortest Cycle
原题链接:CF1205B 题目大意 给定\(n\)个整数\(a_1,a_2,a_3, \dots ,a_n\),若\(i \neq j\)且\(a_i \land a_j \neq 0\),则 ...
- [CF580C]Shortest Cycle(图论,最小环)
Description: 给 \(n\) 个点的图,点有点权 \(a_i\) ,两点之间有边当且仅当 \(a_i\ \text{and}\ a_j \not= 0\),边权为1,求最小环. Solut ...
- @codeforces - 1205B@ Shortest Cycle
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 n 的正整数序列 a1, a2, ..., an ...
随机推荐
- 使用logstash收集java、nginx、系统等常见日志
目录 1.使用codec的multiline插件收集java日志... 1 2.收集nginx日志... 2 3.收集系统syslog日志... 3 4.使用fliter的grok模块收集mysql日 ...
- Flask框架(五) —— session源码分析
Flask框架(五) —— session源码分析 目录 session源码分析 1.请求来了,执行__call__方法 2.__call__方法 3.调用__call__方法 3.1.ctx = s ...
- new 和 malloc 的区别 及使用
Malloc: 定义上:malloc memory allocation 动态内存分配 是c中的一个函数 使用方法: extern void *malloc(unsigned int num_byt ...
- arm初识
一.CPU从指令集角度分类 1.1. CISC (X86) 1.1. 1. CISC CPU 指complex instruction set computer复杂指令集CPU 1.1.2. CIS ...
- HNUSTOJ-1051 最长的波动序列
1051: 最长的波动序列 时间限制: 1 Sec 内存限制: 128 MB提交: 47 解决: 13[提交][状态][讨论版] 题目描述 有一个长度为N的整数序列,序列里面的数是两两不同的,现在 ...
- Let's encrypt 通配域名DNS验证方式的证书自动更新
通配符域名不同于一般的单域名证书. 为了解决之前一篇短文中通配域名通过DNS方式验证的证书自动更新问题. 需要使用到第三方域名提供商的API, 用于自动添加域名的TXT记录, 实现自动验证并完成证书更 ...
- Min-Max 容斥的证明
这里有 Min-Max 容斥的证明以及唯一一道博主做过的例题... 上个结论: \[Min\{S\}=\sum_{T\subseteq S,T\not=\varnothing}(-1)^{|T|-1} ...
- 如何查看Win10开机运行了多长时间 - Windows10.Pro
原文:如何查看Win10开机运行了多长时间 - Windows10.Pro 方法一:使用Windows PowerShell命令查看 以管理员身份运行Windows PowerShell,在打开的“管 ...
- ASP.NET中数据库数据导入Excel并打印(2)
大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码: Private Sub Page_L ...
- git的配置设置
git的基本配置 git是一个版本控制工具,既然是工具,那么就可以根据人的个人喜好来进行设置,git也提供了配置,可以根据自己的喜好来对它进行个性化的设计,以让自己舒服的玩. git有三个配置文件 / ...