题目链接

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. BEC listen and translation exercise 47

    Site One was unpopular because of traffic and parking problems.场地一由于交通和停车问题而不受欢迎. The bombs killed a ...

  2. OpenCV-Python sift/surf特征匹配与显示

    import cv2 import numpy as np def drawMatchesKnn_cv2(img1_gray,kp1,img2_gray,kp2,goodMatch): h1, w1 ...

  3. 【二叉查找树】03验证是否为二叉查找树【Validate Binary Search Tree】

    本质上是递归遍历左右后在与根节点做判断,本质上是后序遍历 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  4. 图的Tarjan算法

    “Tarjan有三种算法 你们知道吗”——Tar乙己 void tarjan(int x) { low[x]=dfn[x]=++ind; q[++top]=x;mark[x]=; for(int i= ...

  5. 【LeetCode】081. Search in Rotated Sorted Array II

    题目: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would t ...

  6. 在oracle中,select语句查询字段中非纯数字值

    最近,将原来的数字符字段转换为数字时,总报错误:无效数字. 如何找出其中哪些是非数字字符的记录?比较麻烦的事.下面是用Oracle DB自带的函数translate可以找出来的 1.创建测试表 Cre ...

  7. JS---script的位置

    都可以,但各有千秋.放在head中:统一管理,方便维护:但浏览器会首先加载js文件,如果js文件过大,会造成页面在加载js的时候“无反应”时间过长,影响用户体验.放在body中(或放在body后):浏 ...

  8. 又来一波!Android精品源码分享

    今天又汇总了几个不错的源码给大家!希望能帮到需要的小伙伴~话不多少,直接上源码! 1.Android精品源码:拖动条控件实现源码 此次分享的源码是一个不错的Android控件,建议大家可以细致的看下. ...

  9. python 使用sqlite3

    Sqlite是一个轻量级的数据库,类似于Access. 一. 安装 Python 2.5开始提供了对sqlite的支持,带有sqlite3库. 没有sqlite的版本需要去PySqlite主页上下载安 ...

  10. DOM 中 Property 和 Attribute 的区别(转)

    property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...