这题最开始给你了N个点,M条边,边是单向边,问不指定起点和终点,最长路是什么???

脑补一下,不定起点和终点的最短路,用弗洛伊德算法搞一搞,但是。。。那个垃圾算法的复杂度是N^3的,但是这个算法的M高达5000,直接放弃

仔细想想,可以用剪纸+dijstra做,但是需要改变一下边权,distra求的是最短路,但是我们要的是最长路这个怎么办呢???

其实可以把边权变成负数,然后把边的权值设置为正的无穷大,那么我们只需要求一个最短路,那么由于权值为负数,这个最短路的值越小,它的相反-----路径之和最大即可

最后防止超时,用一个BOOK数值标记这个点是否有祖先,即它是不是根节点就好了,最后判断如果是跟节点再用dijstra堆优化一下就行

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAX_V = ;
struct edge
{
int to,cost;
};
typedef pair<int, int> P;
int V;
int n,m,st,ed;
int d[MAX_V];
vector<edge> G[MAX_V];
int ans;
void dijkstra(int s)
{
priority_queue<P,vector<P>,greater<P> >que;
for (int i=;i<=n;i++){
d[i]=INF;
}
d[s]=;
que.push(P(,s));
while(!que.empty())
{
// cout<<"---"<<endl;
P p = que.top();
que.pop();
int v=p.second;
if (d[v]<p.first)continue;
for (int i=; i<G[v].size(); i++)
{
edge e=G[v][i];
if (d[e.to] > d[v]+e.cost)
{
d[e.to] = d[v]+e.cost;
que.push(P(d[e.to],e.to));
}
}
}
for (int i=;i<=n;i++){
//cout<<d[i]<<endl;
ans=min(ans,d[i]);
}
// cout<<ans<<endl;
}
int main()
{
int book[];
while(~scanf("%d%d",&n,&m)){
int u,v,w;
memset(book,,sizeof(book));
for (int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
book[v]=;
edge s;
s.cost=-w;
s.to=v;
G[u].push_back(s);
}
for (int i=;i<=n;i++){
if (book[i]==){
dijkstra(i);
}
}
printf("%d\n",-ans);
}
return ;
}

Coolest Ski Route-不定起点和终点----在有向变的情况下---求最长路的更多相关文章

  1. German Collegiate Programming Contest 2018​ C. Coolest Ski Route

    John loves winter. Every skiing season he goes heli-skiing with his friends. To do so, they rent a h ...

  2. dump 验证实例恢复的起点和终点

    什么时候会产生实例恢复呢?当你数据库服务器异常断电,重启数据库就会发生实例恢复.实例恢复是由数据库自动完成的,无须DBA的干涉.当然这里有个前提条件:数据文件. 在线日志文件.控制文件不得有损坏. 我 ...

  3. 【百度地图API】让用户选择起点和终点的驾车导航

    原文:[百度地图API]让用户选择起点和终点的驾车导航 摘要: 如果用户搜索“从机场到火车站”,使用驾车导航DrivingRoute会默认显示一条结果.但同一个城市可能有多个机场和火车站,那么,如何用 ...

  4. hdu 2066 多起点 多终点

    多起点 多终点 无向图 结点的个数要自己求 Sample Input6 2 3 //边数 起点数 终点数1 3 5 //u v w1 4 72 8 123 8 44 9 129 10 21 2 //起 ...

  5. 【10.31校内测试】【组合数学】【记忆化搜索/DP】【多起点多终点二进制拆位Spfa】

    Solution 注意取模!!! Code #include<bits/stdc++.h> #define mod 1000000007 #define LL long long usin ...

  6. Key Vertex (hdu 3313 SPFA+DFS 求起点到终点路径上的割点)

    Key Vertex Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  7. 【10.3校内测试【国庆七天乐!】】【DP+组合数学/容斥】【spfa多起点多终点+二进制分类】

    最开始想的暴力DP是把天数作为一个维度所以怎么都没有办法优化,矩阵快速幂也是$O(n^3)$会爆炸. 但是没有想到另一个转移方程:定义$f[i][j]$表示每天都有值的$i$天,共消费出总值$j$的方 ...

  8. HDU2066一个人的旅行---(多起点多终点最短路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memo ...

  9. HDU——2612Find a way(多起点多终点BFS)

    Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. YUM仓库服务与PXE网络装机

    1.yum:基于RPM包构建软件更新机制自动解决依赖关系,软件包由软件包库提供 提供方式:ftp服务:ftp://IP地址/仓库目录 Http服务:http ://  IP地址/仓库目录 本地目录:f ...

  2. 5.1Python函数(一)

    目录 目录 前言 (一)函数的基本知识 (二)函数的基本使用 ==1.函数的简单定义== ==2.传值函数== (3)输出效果 ==3.不定长函数== ==4.缺省函数== ==5.函数的传值过程== ...

  3. ping 127.0.0.1和ping本地ip分别测试什么?

    ping 127.0.0.1 是你本地的回环地址! 实际上只要是127.0.0.1到127.255.255.255都是回环地址!都是可以PING检查的! 它能ping通,说明你的TCP/IP协议栈没问 ...

  4. mybatis的xml映射文件

    1,在进行统计查询时候,不想写映射的实体类,这时候设置返回的resultType类型是map <select id="getMap" resultType="jav ...

  5. Expires和Cache-Control的理解

    最近在学Nginx,学到有个地方式设置响应头信息,其中有两项是设置Expires和Cache-Control,来设置缓存时间,后来发现"并没有什么卵用",于是就搜了下资料,把整个思 ...

  6. Linux操作系统中打开文件数量的查看方法

    Linux操作系统中打开文件数量的查看方法ulimit -n 4096也就是限制用户的最大文件打开数为4096个 在网上查了关于怎么查看文件打开数的文章大致有两种说法/proc/sys/fs/file ...

  7. Robberies HDU - 2955

    直接说题意吧.(什么网友bb了半天题都说不清楚) 给了  P  表示大于这个概率一定被抓住.则P表示被抓住的概率.N表示现在有的银行,pi表示被抓的概率嘛. 然后,就看数学了.肯定不能算被抓的概率啊. ...

  8. vue v-for 遍历循环时的key值的报错

    问题如下: [Vue warn] Avoid using non-primitive value as key, use string/number value instead. non-primit ...

  9. springcloud单个服务内存使用详情

    查看单个进程的服务占用率 [root@insure dev]# ps -aux|grep claimoauth root ? Sl Dec27 : java -jar /opt/dev/claimoa ...

  10. node 命令行升级版本

    node有一个模块叫n(这名字可够短的...),是专门用来管理node.js的版本的. 1. 首先安装n模块: npm install -g n 2. 升级node.js到最新稳定版 n stable ...