当前位置: 首页 > news >正文

上海 网站建设 外包it/青岛网站优化公司哪家好

上海 网站建设 外包it,青岛网站优化公司哪家好,wordpress欢迎页面模板,东莞企业网站咨询题目描述 设G为有n个顶点的有向无环图&#xff0c;G中各顶点的编号为1到n&#xff0c;且当为G中的一条边时有i < j。设w&#xff08;i&#xff0c;j&#xff09;为边的长度&#xff0c;请设计算法&#xff0c;计算图G中<1&#xff0c;n>间的最长路径。 输入输出格式 输…

题目描述

设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j。设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径。

输入输出格式

输入格式:
输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v)。

输出格式:
输出文件longest.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通,输出-1。

输入输出样例

输入样例#1:
2 1
1 2 1
输出样例#1:
1

说明

20%的数据,n≤100,m≤1000

40%的数据,n≤1,000,m≤10000

100%的数据,n≤1,500,m≤50000,最长路径不大于10^9


题解

做法:拓扑排序+DAG上dp
这题还算是水题,拓扑排序去掉入度为1的点,然后就可以用bfs来做dp了,转移方程也很明显:
dj=max(dj,di+wi,j)(i,j)
关于这题为什么要拓扑排序,好像是不做拓扑排序就会在dp的时候出各种问题。。
下来贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
struct edge{int to,w;edge(int y,int l):to(y),w(l){}
};
int n,m;
vector<edge> G[1501];
int d[1501];
int du[1501];
void addedge(int x,int y,int l){G[x].push_back(edge(y,l));du[y]++;
}
void toposort(int s){queue<int> q;q.push(s);while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<G[x].size();i++){edge &e=G[x][i];du[e.to]--;if(du[e.to]==0){q.push(e.to);}}G[x].clear();}
}
void bfs(int s){queue<int> q;q.push(s);while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<G[x].size();i++){edge &e=G[x][i];if(d[x]+e.w>d[e.to]){d[e.to]=d[x]+e.w;q.push(e.to);}}}
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y,l;scanf("%d%d%d",&x,&y,&l);addedge(x,y,l);}for(int i=2;i<=n;i++){if(du[i]==0){toposort(i);}}if(du[n]==0){printf("-1");return 0;}bfs(1);printf("%d",d[n]);return 0;
}

转载于:https://www.cnblogs.com/stone41123/p/7581282.html

http://www.lbrq.cn/news/1189243.html

相关文章:

  • 红安县建设局网站/关键词工具软件
  • 创业公司用wordpress/河南网站优化
  • iframe 一直网站底部/市场调研报告怎么写的
  • vs2015做的网站/百度爱采购推广怎么入驻
  • 汉口北做网站/seo怎么收费
  • 重庆网站制作开发/seo北京
  • 大良网站建设/今日头条十大新闻最新
  • 佛山电子商务网站建设/网页设计的流程
  • 网站被模仿怎么办/seo网站排名优化工具
  • 丽水专业做网站/百度网页版主页
  • 建设工程专业承包交易中心网站/百度指数官方网站
  • 网站个人备案材料/品牌推广战略
  • 视频发布网站有哪些内容/最新网络营销方式有哪些
  • 为企业做好服务保障/福州百度关键词优化
  • 免费建手机个人网站/聚合广告联盟
  • 怎么面试一个网站开发的人/google seo 优化招聘
  • 做微信小程序和网站那个简单/百度app平台
  • 域名访问网站是什么意思/关于友情链接说法正确的是
  • 南通网站/网络链接推广
  • 上海网站建设公司排名/百度seo怎么操作
  • 我的家乡网页制作步骤/石家庄seo公司
  • 掉关键词网站/网站推广系统方案
  • 局域网如何做视频网站建设/seo公司软件
  • 设计师常用网站/网上店铺的推广方法有哪些
  • 网站维护计划/郑州做网站推广资讯
  • 新创建的网站/域名交易域名出售
  • 四川平昌县建设局网站/福州模板建站哪家好
  • 做网站如何写需求/互联网推广渠道
  • 怎么选择网站建设公司/百度ai助手入口
  • 网站的公关和广告活动怎么做/万网域名续费
  • 智能电网时代:双向WiFi电表在海外家庭能源中的战略价值
  • pytorch | minist手写数据集
  • Fluent许可问题常见解答
  • 【LLM】OpenRouter调用Anthropic Claude上下文缓存处理
  • 基于按键开源MultiButton框架深入理解代码框架(一)(指针的深入理解与应用)
  • 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、现在我们来学习一下C++类模板、记事本的行高亮的操作的讲解)