博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实验之图论十一:AOE网上的关键路径
阅读量:2352 次
发布时间:2019-05-10

本文共 1486 字,大约阅读时间需要 4 分钟。

#include
#include
#include
#include
using namespace std;struct node{ int a,b,w;}s[50010];int dis[50010];int path[50010];int in[50010];int out[50010];int ans;void Bellman(int n,int m){ memset(path,0,sizeof(path)); memset(dis,0,sizeof(dis)); for(int j = 2; j <= n; j++) { bool flag = false; for(int i = 1;i<=m;i++) { if((dis[s[i].a] < dis[s[i].b] + s[i].w) || ((dis[s[i].a] == dis[s[i].b]+s[i].w)&& s[i].b < path[s[i].a])) { dis[s[i].a] = dis[s[i].b]+s[i].w; path[s[i].a] = s[i].b; flag = true; } } if(!flag)break; } printf("%d\n",dis[ans]); int k = ans; while(path[k]!=0) { printf("%d %d\n",k,path[k]); k = path[k]; }}int main(){ int n,m; int i; while(~scanf("%d %d", &n,&m)) { memset(s,0,sizeof(s)); memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(i = 1;i <= m; i++) { scanf("%d %d %d", &s[i].a,&s[i].b,&s[i].w); in[s[i].b]++; out[s[i].a]++; } for(i = 1;i <= n; i++) { if(in[i] == 0) ans = i; } Bellman(n,m); } return 0;}/***************************************************User name: rj170408宋博文Result: AcceptedTake time: 732msTake Memory: 1564KBSubmit time: 2018-07-26 16:32:20****************************************************/

 

转载地址:http://tnwtb.baihongyu.com/

你可能感兴趣的文章
Objective-C 获取控件 详解
查看>>
Objective-C 事件处理 详解
查看>>
IOS UIView 详解
查看>>
IOS 成员变量,属性变量,局部变量,实例变量,全局变量 详解
查看>>
Android ADB 详解
查看>>
GitHub 出现 POST git-receive-pack (chunked) 解决方案详解
查看>>
iOS SQLCipher SQLite加密 详解
查看>>
OpenSSL生成证书进行iOS加密,java解密的RSA非对称加密 详解
查看>>
Android SQLCipher数据库加密 详解
查看>>
Android 6 权限 详解
查看>>
Android EventBus详解
查看>>
iOS 目录详解
查看>>
iOS 图片缓存 详解
查看>>
iOS 目录详解
查看>>
Android Studio Live Templates 详解
查看>>
iOS plist 详解
查看>>
iOS 访问网络权限
查看>>
iOS AFNetworking 以及 Cookie 详解
查看>>
iOS 关闭软键盘
查看>>
iOS 限制应用只能竖屏显示
查看>>