首页 > 其他分享 >[拓扑排序 反向建图] 825E - Minimal Labels

[拓扑排序 反向建图] 825E - Minimal Labels

时间:2022-11-25 20:05:13浏览次数:55  
标签:typedef int Labels long 825E 建图 include deg


[拓扑排序 编号字典序最小] 825E - Minimal Labels

题目

​题目链接​

[拓扑排序 反向建图] 825E - Minimal Labels_字典序

思路

这题答案要求节点编号越小,打上的标签越小,即编号序列字典序最小,而非拓扑序列字典序最小。

想让当然地建图然后优先队列从小到大,这样每次编号小的先出去。

但这样不大对,看下面的例子,上面是正常建图,然后优先队列从小到大;下面是反向建图优先队列从大到小。

发现下面的方法更优

[拓扑排序 反向建图] 825E - Minimal Labels_算法_02

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
#include<utility>
#include<set>
#include<vector>
#include<queue>
#include<stack>
using namespace std;

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int>PII;
#define endl '\n'
//CHECK MULTIPLY INPUT !!!
//NEW DATA CLEAN !!!
//THINK > CODE !!!
const int N=1e5+10;
vector<int>edge[N];
int deg[N],A[N],ans[N];
int n,m;
void topsort(){
int cnt=0,flag=n;
priority_queue<int,vector<int>,less<int> >q;//从大到小
for(int i=1;i<=n;i++)
if(deg[i]==0)q.push(i);
while(!q.empty()){
int t=q.top();
q.pop();
A[t]=flag--;
for(auto to:edge[t]){
deg[to]--;
if(deg[to]==0)q.push(to);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int v,u;cin>>u>>v;
edge[v].push_back(u);
deg[u]++;
}
topsort();
for(int i=1;i<=n;i++)cout<<A[i]<<" ";
return 0;
}


标签:typedef,int,Labels,long,825E,建图,include,deg
From: https://blog.51cto.com/u_15891800/5887700

相关文章

  • 一些简单的图论模型和建图技巧
    1.常见模型先有模型,而后有建图技巧.二分图和网络流那一套建图不是这篇文章讨论的内容.看上去全是最短路相关的建图(本来想写2-SAT的,但是那部分内容已经包含在S......
  • 「WOJ 4701」Walk 虚点建图+01bfs
    前言模拟赛中,yzh遇到了这道题,但由于yzh没有学过01bfs。。。所以就一直在优化这道题,导致浪费了很长时间(但nfls的数据太水,dij和spfa都能过)Description给你一个\(n\)个......
  • 5分钟搭建图片压缩应用
    摘要:用华为云函数工作流FunctionGraph搭建图片压缩应用。本文分享自华为云社区《真正的按需计费丨函数工作流FunctionGraph实战,5分钟搭建图片压缩应用》,作者:华为云PaaS服......
  • 20221111_T1B_线段树优化建图/并查集
    题意给定一个字符串,其中只有a和b,现在一个字符能够跳到与之中间a的个数范围在\([l,r]\)的东西。题解赛时得分:100/100对于一个东西,显然如果将能相互到达连边,那么......
  • 【CF1120D】Power Tree(建图,差分,最小生成树)
    题面题意有点难懂。主要是洛谷给的翻译太zz了。大概的意思是:给定一棵\(n\)个点的有根树,\(1\)为根,每一个点有一个代价\(c_i\)。然后有两个人Alice和Bob在玩游......
  • 【ARC069F】Flags(2-SAT,Tarjan,线段树优化建图)
    注意:本题的点数可以相比题解优化一半。首先先二分答案。然后判断能否使得两两旗子之间的距离都大于\(mid\)。然后发现这是一个2-SAT问题。2-SAT问题:通俗地说,有\(......
  • k8s-标签(labels)
    官网https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/labels/标签(Labels)是附加到Kubernetes对象(比如Pod)上的键值对。标签旨在用于指定......
  • 线段树优化建图 (CF786B、SNOI2017炸弹)
    先来看板子题:CF786B可以发现,如果对着区间内的每一个点都建一条边,然后跑最短路,我们无论是在空间还是时间复杂度上都是过不去的。因此,我们请出老朋友线段树。参考上图。......
  • My University Is Better Than Yours (建图 + tj去环缩点 + 拓扑序 )
    题意:给你n所大学,给你m种类型的排名,问你有每一所大学可以比其他多少个大学大,将所有排名都累计上思路:一开始想用bitset做,但是空间爆了根据题意来建图,转化为......
  • SLAM代码之单目建图
    思路第一帧为参考帧对后面每一帧找到极限方向进行极线搜索找出NCC最高的高斯深度滤波计算不确定度高斯融合dense_mapping.cpp#include<iostream>#in......