洛谷P3916||图的遍历||反向建图||链式前向星||dfs
题目描述
给出 NN 个点, MM 条边的有向图,对于每个点 vv ,求 A(v)A(v) 表示从点 vv 出发,能到达的编号最大的点。
解题思路
看起来很简单的一道题,
但我依然调了一天,我还是太菜了
审题从一个点出发到达编号最远的点,其实可以反向优化为从最远的点出发可以到达哪些点,
这样每个点只需要遍历一次即可
然而以上是看题解才知道
我好菜啊
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm> #define N 100010
using namespace std; struct road{
int u,m,v;
}ro[N]; int len=,n,m;//n代表一共有几个城市
int first[N],last[N];
int vv[N],maxx[N],links[N];
void insert(int xx,int yy,int zz)
{
len++;
ro[len].u=xx;ro[len].m=yy;ro[len].v=zz;
last[len]=first[xx];first[xx]=len;
} void init()
{
cin>>n>>m;
for(int i=;i<=m;i++)
{
int aa,bb;
cin>>aa>>bb;
insert(bb,aa,);
links[aa]++;
}
} void debug_output()
{
for(int i=;i<=len;i++)
{
cout<<ro[i].u<<' '<<ro[i].m<<' '<<ro[i].v<<' '<<first[i]<<' '<<last[i];
cout<<endl;
}
}
bool flag[N]; inline void judge(int k,int dd){ if(maxx[k]>dd) maxx[k]=dd;} void dfs(int Point,int st)
{
if(maxx[Point]) return;
maxx[Point]=st;
for(int i=first[Point];i;i=last[i])//这个操作要记好,可以遍历单源点的每一条边
if(!maxx[ro[i].m]) dfs(ro[i].m,st);
return; } void output()
{
for(int i=;i<=n;i++) cout<<maxx[i]<<' ';
cout<<endl;
}
int main()
{
init();
for(int i=n;i>=;i--) dfs(i,i);
output();
return ;
}
写的一如既往的长,,,
溜了溜了
洛谷P3916||图的遍历||反向建图||链式前向星||dfs的更多相关文章
- 洛谷P3371单源最短路径Dijkstra版(链式前向星处理)
首先讲解一下链式前向星是什么.简单的来说就是用一个数组(用结构体来表示多个量)来存一张图,每一条边的出结点的编号都指向这条边同一出结点的另一个编号(怎么这么的绕) 如下面的程序就是存链式前向星.(不用 ...
- 链式前向星存树图和遍历它的两种方法【dfs、bfs】
目录 一.链式前向星存图 二.两种遍历方法 一.链式前向星存图:(n个点,n-1条边) 链式前向星把上面的树图存下来,输入: 9 ///代表要存进去n个点 1 2 ///下面是n-1条边,每条边连接两 ...
- UESTC30-最短路-Floyd最短路、spfa+链式前向星建图
最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同 ...
- POJ 1655 Balancing Act ( 树的重心板子题,链式前向星建图)
题意: 给你一个由n个节点n-1条边构成的一棵树,你需要输出树的重心是那个节点,以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的 题解: 树的重心定义:找到一个点,其所 ...
- 最短路 spfa 算法 && 链式前向星存图
推荐博客 https://i.cnblogs.com/EditPosts.aspx?opt=1 http://blog.csdn.net/mcdonnell_douglas/article/deta ...
- 图的存储结构:邻接矩阵(邻接表)&链式前向星
[概念]疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图. Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵. 邻接矩阵: 开一个二维数组gr ...
- UESTC 30.最短路-最短路(Floyd or Spfa(链式前向星存图))
最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同 ...
- 三种邻接表存图模板:vector邻接表、数组邻接表、链式前向星
vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector< ...
- Pants On Fire(链式前向星存图、dfs)
Pants On Fire 传送门:链接 来源:upc9653 题目描述 Donald and Mike are the leaders of the free world and haven't ...
随机推荐
- react采坑笔记
1. dva + antd input设置defaultVaule时查看时inpu有值但是页面上不显示 解决办法 设置一个key值,当key值改变从新渲染 <div key={this.prop ...
- zk开机自动启动脚本
[Unit] Description=Zookeeper service After=network.target [Service] User=www Group=www SyslogIdentif ...
- 啊哈算法第四章第三节 层层递进-广度优先搜索 java实现
package corejava; public class FourThree { static int [][]a=new int[50][50]; static int [][]b=new in ...
- python3 里安装cv2
电脑上同时有python2 和python3,python2 里有cv2,Python3里没有. 用pip3 install opencv-python 安装,提示: You are using pi ...
- Nginx性能调优之buffer参数设置
Nginx 的缓存功能有:proxy_cache / fastcgi_cache proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态.fastcgi_cache的作用 ...
- Java小白不走弯路学习Java流程以及学习误区
学习Java编程技术肯定是以就业拿到高薪工作为主要目的的,可是高薪不会那么轻易拿到,这是一个最简单的道理.没有付出就没有回报,在整个学习Java编程技术的过程中,你需要付出时间.精力.金钱.废话不多说 ...
- 45_redux_comment应用_redux版本_异步功能
/* * 包含所有action的type名称常量 * */ //添加评论 export const ADD_COMMENT = 'add_comment'; //删除评论 export const D ...
- 尚硅谷springboot学习35-启动原理
先列出几个重要的事件回调机制 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListen ...
- windows安装composer
Composer 是 PHP 的一个依赖管理工具(不是一个包管理器).它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 在windows下安装的方法 方法一:使用安装程序 这是将 Com ...
- C# ASP.NET Forms身份认证
原文:https://www.cnblogs.com/kyo-lynn/p/3418577.html 原文:https://www.cnblogs.com/fish-li/archive/2012/0 ...