题目链接

SCOJ

TOPOI

题目描述

Problem

给定一个包含n个顶点m条边的带权有向图,找一条边数最多的路径,且路径上的边的权值严格递增。
图中可能有重边和自环。

Input Data

第一行,两个整数n和m,表示顶点数和边数。
接下来m行,每行三个整数u,v,w,表示顶点u到顶点v有一条权值为w的边。

Output Data

一行,一个整数。

Input Sample 1

3 3
1 2 1
2 3 2
3 1 3

Output Sample 1

3

Input Sample 2

6 7

1 2 1

3 2 5

2 4 2

2 5 2

2 6 9

5 4 3

4 3 4

Input Sample 2

6

Data Limit

题目思路

由于我太弱了,想不出更好的做法 ,更快更强的做法请看 大佬的题解(这个可以点)

可能会有长度相同的边而又要满足严格递增是这道题中的问题所在

蒟蒻的思路很简单,用vector存以每一个节点结尾的路径信息 (数组会MLE)

信息1:这个点是由哪条边过来的

信息2:由这条边过来的路径最大长度是多少

具体做法

先对每条边按长度排序,保证长度不下降

第一条边单独做,直接将信息存入vector

sort (a + 1, a + m + 1, cmp);  //将边按从大到小排序
v[a[1].v].push_back((q){1, 1}); //第一条边单独处理

然后枚举每一条边,枚举每个u的方案,更新方案和答案

代码

(代码不长,但是挺慢,空间也大,大佬的强多了)

#include <bits/stdc++.h>
using namespace std;
const int maxn = 300008;
int n, m, ans = 1;
struct e{
int u, v, w;
}a[maxn]; //e记录每一条边信息
struct q{
int num, k; //num表示路径长度(边数),k表示由第k条边走来
}; //q存储到每个节点方案的信息
bool cmp (e a, e b) {
return a.w < b.w;
}
vector <q> v[maxn];
int main(){
scanf ("%d %d", &n, &m);
for (int i = 1; i <= m; i++) scanf ("%d %d %d", &a[i].u, &a[i].v, &a[i].w);
sort (a + 1, a + m + 1, cmp); //将边按从大到小排序
v[a[1].v].push_back((q){1, 1}); //第一条边单独处理
for (int i = 2; i <= m; i++){
v[a[i].v].push_back((q){1, i}); //先存入vector中
int t = a[i].u, len = v[a[i].v].size(); //记录当前的长度(下标)
for (int j = 0; j < v[t].size(); j++){ //枚举u的方案
if (a[v[t][j].k].w < a[i].w) {
v[a[i].v][len-1].num = max (v[a[i].v][len-1].num, v[t][j].num + 1);
ans = max (ans, v[a[i].v][len-1].num);
//如果满足严格递增更新方案和答案
}
}
}
printf ("%d", ans);
return 0;
}

SCOJ4427 / TOPOI 4404: Miss Zhao's Graph 解题报告的更多相关文章

  1. 【LeetCode】323. Number of Connected Components in an Undirected Graph 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 并查集 日期 题目地址:https://leetcod ...

  2. 【LeetCode】133. Clone Graph 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://le ...

  3. LeetCode: Clone Graph 解题报告

    Clone GraphClone an undirected graph. Each node in the graph contains a label and a list of its neig ...

  4. codeforces 165D.Beard Graph 解题报告

    题意: 给一棵树,树的每条边有一种颜色,黑色或白色,一开始所有边均为黑色,有两个操作: 操作1:将第i条边变成白色或将第i条边变成黑色. 操作2 :询问u,v两点之间仅经过黑色变的最短距离. 树链剖分 ...

  5. SCOJ 4427: Miss Zhao's Graph dp

    4427: Miss Zhao's Graph 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4427 Description Mr Jiang ...

  6. 【LeetCode】785. Is Graph Bipartite? 解题报告(Python)

    [LeetCode]785. Is Graph Bipartite? 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu. ...

  7. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  8. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  9. POJ 2054 Color a Tree解题报告

    题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...

随机推荐

  1. Gym - 100801D:Distribution in Metagonia (数学)

    题意:给定一个N,让你把它拆成若干个只含素因子2和3的数之和,且两两之间没有倍数关系,比如10=4+6. 思路:即是2因子的幂递增,3因子的幂递减:或者反之. 对于当前N,我们拆分出的数为num=2^ ...

  2. uoj problem 12 猜数

    题目大意 每次询问给出g,l,有\(a*b = g*l = n\),且\(a,b\)均为\(g\)的倍数.求\(a+b\)的最小值和\(a-b\)的最大值. 题解 因为\(a,b\)均为\(g\)的倍 ...

  3. 浅谈vue路由原理

    Vue的路由实现:hash模式 和 history模式 hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取: 特点:hash虽然在UR ...

  4. spring IOC 注解@Required

    @Required注解适用于bean属性的setter方法,使用@Required的方法必须在xml中填充,负责报错 例如下面的例子中,student中的setAge和setName有@Require ...

  5. 彻底删除kafka下面的topic

    如果只是用kafka-topics.sh的delete命令删除topic,会有两种情况: 如果当前topic没有使用过即没有传输过信息:可以彻底删除 如果当前topic有使用过即有过传输过信息:并没有 ...

  6. mysql: not unique table/alias error. 如何解决

    1.请检查出现问题位置的 SQL 语句中是否使用了相同的表名,或是定义了相同的表别名. 2.检查 SELECT 语句中要查询的字段名是不是定义重复,或者没有定义. 3.把你的sql语句中的换行去掉.一 ...

  7. app专项测试(稳定性测试、安全性测试)

    https://blog.csdn.net/xiaomaoxiao336368/article/details/84887948

  8. rails常用命令示例

    数据迁移命令 1.一下命令执行后会在db\migrate下产生同名数据迁移文件(文件内容可自行修改,基本语法见“数据迁移文件”部分) 创建model:rails generate model user ...

  9. JavaScript接口

    JavaScript中实现接口的方法有三种: 第一种,使用注释的方法实现接口 特点:(1)最简单,但是功能最弱(2)利用 interface和 implement"文字"(3)把他 ...

  10. mysql错误代号大全

    B.1. 服务器错误代码和消息 服务器错误信息来自下述源文件: · 错误消息信息列在share/errmsg.txt文件中."%d"和"%s"分别代表编号和字符 ...