牛客周赛44 F小红的基环树删边

2024-05-28 07:04

本文主要是介绍牛客周赛44 F小红的基环树删边,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接:F-小红的基环树删边

题目大意:给一个基环树,一个n个点,n条边。若是删除第i边,从1到n的最短距离是多少?

思路:因为是基环树,那么从1到n最多就只有二条路径,那么就可以求出不在当前路线上的边删除后的最短路。

//冷静,冷静,冷静
//调不出来就重构 
#pragma GCC optimize(2)
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
//#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld; 
typedef pair<ll,ll> pii;
const int N=1e6+10,mod=998244353;
ll h[N],e[N],ne[N],idx,f[N],w[N];
inline void add(ll a,ll b,ll id)
{w[idx]=id,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
pii p[N];
ll n;
bool st[N];
void dfs(ll x,ll dep)
{if(x==n)//如果搜索到了一条路径,那么用了的边,就被标记出来了 {for(int i=1;i<=n;i++){if(!st[i])//没有标记的边,就算删除了可不会对搜索的路径产生影响 {f[i]=min(f[i],dep);}}}for(int i=h[x];~i;i=ne[i]){ll j=e[i],id=w[i];if(!st[id])//如果当前边没有用过,那么就是可以使用 {st[id]=1;dfs(j,dep+1);st[id]=0;}}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;memset(h,-1,sizeof(h));for(int i=1;i<=n;i++){ll a,b;cin>>a>>b;f[i]=1e18;add(a,b,i);add(b,a,i);p[i]={a,b};}dfs(1,0);for(int i=1;i<=n;i++){if(f[i]==1e18)f[i]=-1;//如果f[i]的值没有被更新,那么它就是二条路径的必经之路,如果删除就无法到达 cout<<f[i]<<endl;}return 0;
}

这篇关于牛客周赛44 F小红的基环树删边的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009859

相关文章

leetcode刷题(44)——242. 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

软考 系统架构设计师系列知识点之杂项集萃(44)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(43) 第71题 设有员工实体Employee(员工号,姓名,性别,年龄,电话,家庭住址,家庭成员,关系,联系电话)。其中,“家庭住址”包括邮编、省、市、街道信息;“家庭成员,关系,联系电话”分别记录了员工亲属的姓名、与员工的关系以及联系电话,且一个员工允许有多个家庭成员。 员工实体Employee的主键为( );该关系属于( );

【牛客网 2017年校招模拟笔试(第一场)】超级素数幂

超级素数幂 描述 如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。 输入 输入一个正整数n(2 ≤ n ≤ 10^18) 分析 暴力枚举幂q,将n开q次方之后得到p,检查p是否为素数,并且检查p的q次幂是否等于n。 *要注意精度问题,代码待之后补充。

【牛客网 2017年校招模拟笔试(第一场)】 序列和

求序列和 描述 我们要找连续的一段长度大于等于L小于等于100整数和等于N,容易观察到合法的长度范围很小,于是我们从L开始枚举,然后找到第一个输出即可。 我的代码 最初提交了一次代码,用vector保存了所有满足条件的序列,输出长度最小的,提交之后说内存超出限制,看了一眼题目,发现内存貌似是限制在2w多k?伤心,之前做题没遇到过内存还有这么严格的限制。 修改了一下,其实这个代码并没

数独(搜索答案不唯一,牛客上测试83%)

#include <bits/stdc++.h>using namespace std;int a[10][10];int flag=0;bool check(int n,int key){//行判断for(int i=0; i<9; i++){int j=n/9;if(a[j][i]==key)return false;}//列判断for(int i=0; i<9; i++){int

LeetCode---402周赛

题目列表 3184. 构成整天的下标对数目 I 3185. 构成整天的下标对数目 II 3186. 施咒的最大总伤害 3187. 数组中的峰值 一、构成整天的下标对数目 I & II 可以直接二重for循环暴力遍历出所有的下标对,然后统计符合条件的下标对数目返回。代码如下 class Solution {public:int countCompleteDayPairs(vect

第 402 场 LeetCode 周赛题解

A 构成整天的下标对数目 I 计数:遍历 h o u r s hours hours ,记录 h o u r s [ i ] % 24 hours[i]\%24 hours[i]%24 的出现次数 class Solution {public:long long countCompleteDayPairs(vector<int>& hours) {vector<int> cnt(

小红书官方教程:如何在小红书上打造IP

在小红书这个五彩斑斓的社区里,打造一个成功的IP就像是种下一颗种子,看着它慢慢发芽,开花结果。今天,就让我们来聊聊如何在小红书上打造一个让人眼前一亮的个人品牌。 首先,什么是IP?IP,也就是知识产权,但在小红书上,它更多指的是你的个人品牌,你的形象,你的故事,还有你和粉丝之间的那份特殊联系。 一、找准定位,做自己 在小红书上,每个人都是独一无二的。你不需要模仿别人,做自己就是最好的定位。比

【地质灾害监测实现有效预警,44人提前安全转移】

6月13日14时,国信华源地质灾害监测预警系统提前精准预警,安全转移10户44人。 该滑坡隐患点通过科学部署国信华源裂缝计、倾角加速度计、雨量计、预警广播等自动化、智能化监测预警设备,实现了对隐患点裂缝、位移、降雨量等关键要素的实时动态监测,从而构建一套点+面结合、人防+技防并举的地质灾害监测预警体系。 入汛以来,国信华源驻场技术团队持续开展24小时平台值班专报简报推送、运行维护、预警

qmt量化交易策略小白学习笔记第44期【qmt编程之期货行情数据】

qmt编程之获取期货行情数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取行情数据 提示 使用该接口时,需要先订阅实时行情(subscribe_quote)或下载过历史行情(download_history_data) python from xtquant import xtdataxtdata.get_market_data