Codeforces Round #693 (Div. 3) G. Moving to the Capital dp + 思维

传送门
题意: 给一个图,111号点为中心点,定义dis[i]dis[i]dis[i]表示111号点到iii的距离。现在有三种移动方式
(1)(1)(1)iii移动到jjjdis[i]<dis[j]dis[i]<dis[j]dis[i]<dis[j]
(2)(2)(2)iii移动到jjjdis[i]>=dis[j]dis[i]>=dis[j]dis[i]>=dis[j]
(3)(3)(3)结束旅程。
其中第二种移动方式最多只能使用一次。问每个点能到达的离起点最近的点的距离是多少。

思路: 我们维护一个dpdpdp数组,dp[i]dp[i]dp[i]表示iii点能到达的距离起点最近的距离。转移方程也比较好想啦
{dp[i]=min(dp[i],dp[j]),dis[i]<dis[j]dp[i]=min(dp[i],dis[j]),dis[i]>=dis[j]\begin{cases} dp[i]=min(dp[i],dp[j]),dis[i]<dis[j] \\ dp[i]=min(dp[i],dis[j]),dis[i]>=dis[j] \end{cases}{dp[i]=min(dp[i],dp[j]),dis[i]<dis[j]dp[i]=min(dp[i],dis[j]),dis[i]>=dis[j]
dp[i]dp[i]dp[i]的初始值为dis[i]dis[i]dis[i],转移的时候只需要按照disdisdis从大到小转移即可。按照深度排个序就好了,不知道为什么我写了个优先队列

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
int dis[N],p[N];
int f[N],g[N];
vector<int>v[N];
bool st[N];struct cmp
{bool operator () (int a,int b){return dis[a]<dis[b];}
};int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);int _; scanf("%d",&_);while(_--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) v[i].clear(),st[i]=false,p[i]=i,dis[i]=INF;for(int i=1;i<=m;i++){int a,b; scanf("%d%d",&a,&b);v[a].pb(b);}dis[1]=0; st[1]=true;queue<int>qq; qq.push(1);while(qq.size()){int t=qq.front(); qq.pop();for(auto x:v[t]) if(!st[x]) dis[x]=dis[t]+1,qq.push(x),st[x]=true;}priority_queue<int,vector<int>,cmp>q;int mx=0;for(int i=1;i<=n;i++) st[i]=false,f[i]=dis[i];for(int i=1;i<=n;i++) q.push(i),st[i]=true;while(q.size()){int u=q.top(); q.pop();for(auto x:v[u]){if(dis[x]>dis[u]) f[u]=min(f[u],f[x]);else f[u]=min(f[u],dis[x]);if(!st[u]) q.push(u),st[u]=true;}}for(int i=1;i<=n;i++) printf("%d ",f[i]);}return 0;
}
/**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AGC038D - Unique Path(建图)

AGC038D - Unique Path Solution 此题较水。 大概就是简单路径唯一意味着连成一棵树&#xff0c;因此先给这些限制的端点放在同一个连通块内&#xff0c;然后如果有多条路径的限制的两端点在同一个连通块内&#xff0c;则无解。 然后考虑如果没有多条路径的限制&#xff0c;…

ASP.NET Core 奇淫技巧之动态WebApi

一.前言接触到动态WebApi&#xff08;Dynamic Web API&#xff09;这个词的已有几年&#xff0c;是从ABP框架里面接触到的&#xff0c;当时便对ABP的这个技术很好奇&#xff0c;后面分析了一波&#xff0c;也尝试过从ABP剥离一个出来作为独立组件来使用&#xff0c;可是后来因与…

CF1478A - Nezzar and Colorful Ball(数学)

CF1478A - Nezzar and Colorful Balls Solution 真不戳&#xff0c;这AAA题真不戳&#xff0c;我直接好家伙。 讲一下我搞了半个小时的垃圾做法 &#xff08;好吧后来看了看标算好像和我是一样的&#xff09; 。 大概是容易发现你两个数(x,y)(x,y)(x,y)做来做去最后一定是ax…

Codeforces Round #693 (Div. 3) E. Correct Placement 思维

传送门 题意&#xff1a; 思路&#xff1a; 对于每个人都有个二元组(x,y)(x,y)(x,y)&#xff0c;从题意中提取有效信息就是&#xff1a;当(x1,y1)(x_1,y_1)(x1​,y1​)的最大值大于(x2,y2)(x_2,y_2)(x2​,y2​)的最大值&#xff0c;(x1,y1)(x_1,y_1)(x1​,y1​)的最小值大于(…

记录一次生产发布事件——(简单的非空验证也能引发大问题)

事件经过下午四点&#xff0c;发布生产g环境(生产环境m为正式环境&#xff0c;g为内测环境)。这时测试有人提出“服务器忙”。听到这里我赶紧翻了翻内测日志&#xff0c;发现了最熟悉的老朋友——未将对象引用设置到对象的实例。问题出现在如下代码上。(我下面附上了伪代码&…

Codeforces Round #705 (Div. 2) D. GCD of an Array 质因子分解 + stl维护

传送门 题意&#xff1a; 给nnn个数&#xff0c;让后qqq个操作&#xff0c;每次选择一个位置的数使其乘xxx&#xff0c;每次询问后输出所有数的gcdgcdgcd。 思路&#xff1a; 这个题思路算是比较好想的。首先就是一个计算方式即计算所有数的gcdgcdgcd&#xff0c;这个比较容易…

CF938G Shortest Path Queries(线性基,线段树分治,并查集)

CF938G Shortest Path Queries Solution 套路题。 xorxorxor最短路可以用线性基维护&#xff08;把每个环的边权异或和放进线性基&#xff0c;询问时把树边路径边权异或和放在线性基里跑出最小值即可&#xff09;。 然后因为线性基删除比较慢而麻烦&#xff08;注意线性基是…

程序员过关斩将--你为什么还在用存储过程?

点击上面“蓝字”关注&#xff0c;带你看好电影菜菜哥&#xff0c;我新接手了一个项目&#xff0c;看的我头疼呀业务有这么复杂呀&#xff1f;不是的&#xff0c;这个老项目完全是用存储过程写的&#xff0c;每个存储过程都好几百行这样呀&#xff0c;是够头疼的~有没有办法帮我…

Educational Codeforces Round 101 (Rated for Div. 2) C. Building a Fence 思维取范围

传送门 题意&#xff1a; 思路&#xff1a; 刚看到这个题其实是没什么思路&#xff0c;想过从前往后推或者从后往前推&#xff0c;但是都不是很可行。因为两边都有一个固定的挡板挡住&#xff0c;我们可以根据其中的一个算出来每个位置高度的范围&#xff0c;让后检查一下范…

CF1237F Balanced Domino Placements(组合计数,dp)

CF1237F Balanced Domino Placements Solution 显然可以先考虑横着的骨牌&#xff0c;再考虑竖着的骨牌。但是思路卡在了选取横着的骨牌会对竖着的骨牌的相邻对数产生影响。 然而事实上我们只需要换一个统计顺序&#xff0c;先考虑横着的骨牌的列和竖着的骨牌的行&#xff0…

asp.net core 集成JWT

【什么是JWT】JSON Web Token&#xff08;JWT&#xff09;是目前最流行的跨域身份验证解决方案。JWT的官网地址&#xff1a;https://jwt.io/通俗地来讲&#xff0c;JWT是能代表用户身份的令牌&#xff0c;可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权…

2021年度训练联盟热身训练赛第一场 E Early Orders 思维 + 栈

传送门 题意&#xff1a; 给nnn个数&#xff0c;一个kkk&#xff0c;求aaa中包含1−k1-k1−k且字典序最小的子序列。 思路1&#xff1a; 记p[i]p[i]p[i]为iii出现的最后位置&#xff0c;让后维护一个栈&#xff0c;当这个数不在栈里时将其入栈&#xff0c;入栈的时候跟栈顶比…

CF855G. Harry Vs Voldemort(边双,并查集,dp)

CF855G. Harry Vs Voldemort Solution 考虑每增加一条边都会把路径上的边双都连成一个大边双&#xff0c;考虑合并xxx和yfaxy fa_xyfax​ 这两个边双的贡献&#xff0c;分类讨论&#xff1a; 选取三个同边双内的点。选取在同一个边双内选两个点&#xff0c;剩下一个在其他边…

xBIM(eXtensible Building Information Modelling)可扩展的建筑信息模型

一、xBIM 简介BIM&#xff08;Building Information Modelling&#xff09;建筑信息模型&#xff0c;xBIM&#xff08;eXtensible Building Information Modelling&#xff09;可扩展的建筑信息模型。它是一个.NET 开源软件开发BIM工具包&#xff0c;支持BuildingSmart数据模型…

Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题

传送门 题意&#xff1a; 给了如下规则&#xff0c;上面三个只要出现一个情况就是非平局&#xff0c;现在给你个字符矩阵&#xff0c;让后其中XXX字符有KKK个(hardhardhard版本XXX和OOO一共KKK个)&#xff0c;每次操作可以将XXX变成OOO&#xff0c;OOO变成XXX&#xff0c;用不…

AGC019D - Shift and Flip(枚举)

AGC019D - Shift and Flip 很久之前WAWAWA的题&#xff0c;终于补掉了。。。这题细节是真的烦。 Solution 这题数据范围较小&#xff0c;于是我们枚举最终AAA与BBB的哪一个字符开始匹配&#xff0c;设这个位置为SSS。 然后考虑分顺时针/逆时针转到SSS两种情况讨论。 以逆时…

译 | .NET Core 3.0 Preview 6 已发布

原文&#xff1a;Richard Lander翻译&#xff1a;Edi Wang今天&#xff0c;我们宣布 .NET Core 3.0 Preview 6。它的更新包括编译程序集以改进启动、使用链接器和 EventPipe 改进优化应用程序的大小。我们还在 ARM64 上发布了针对 Alpine 的新 Docker 镜像。立即在 Windows、ma…

Codeforces Global Round 12 D. Rating Compression 思维 + 贪心

传送门 题意&#xff1a; 给一个长度为nnn的数组aaa&#xff0c;定义一个数组bbb&#xff0c;且bjminj<i<jk−1aib_jmin_{j<i<jk-1}a_ibj​minj<i<jk−1​ai​&#xff0c;比如j3j3j3的时候&#xff0c;a[1,3,4,5,2]a[1,3,4,5,2]a[1,3,4,5,2]&#xff0c;b3…

CF528C. Data Center Drama(欧拉回路,构造)

CF528C. Data Center Drama Solution 容易发现&#xff0c;加边后的图必然满足所有点的度为偶数&#xff0c;并且总的边数是偶数&#xff0c;这启发我们使用欧拉回路。 设欧拉回路为vk1et1vk2et2vk3...vk∣E∣1v_{k_1}e_{t_1}v_{k_2}e_{t_2}v_{k_3}...v_{k_{|E|1}}vk1​​et…

庆祝.NET Core悄然崛起:免费送50本优秀技术书籍,请笑纳!!

为了庆祝 .NET社区蓬勃发展&#xff0c;今天特地联合几位.NET大佬给大家带来50本高质量技术书籍。.NET Core自开源以来&#xff0c;依托微软强大的科技实力日趋完善&#xff0c;再也不是10年前那种封闭状态。强大的跨平台&#xff0c;强大的IDE&#xff0c;强大的语言特性&…