AOE关键路径
来源:互联网 发布:密度聚类算法处理轨迹 编辑:程序博客网 时间:2024/06/08 19:55
哈哈哈,今天晚上哈,这些天一直在训练但是感觉自己没怎么长进,因为个人赛的时候总是爆零,但是今天晚上我看了一下曾经让我头疼不以的AOE路径,我竟然先看算法
然后写了一下,竟然一发A掉了,感觉没难度哈哈哈,好了不吹了,下面就是我写的一道简单的AOE小板子,可能哈,鄙人是一个小菜鸡有些地方写的不是多好,如果大家看出来了就跟我说一下;
#include <string.h>#include <stdio.h>#include <stdlib.h>#include <algorithm>using namespace std;#define Max 55555struct node{ int u,v,w;}Edge[Max];void Bellman(int n,int m);int path[Max],dis[Max],in[Max],out[Max];int n,m,s;int main(){ while(scanf("%d %d",&n,&m)!=EOF) { memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(int i=0;i<m;i++) { int a,b,c; scanf("%d %d %d",&a,&b,&c); Edge[i].u=a; Edge[i].v=b; Edge[i].w=c; out[a]++; in[b]++; } for(int i=1;i<=n;i++) { if(in[i]==0) { s=i; break; } }// printf("%d\n",s); Bellman(n,m); } return 0;}void Bellman(int n, int m)//最短路的Bellman动态松弛思想;{ memset(dis,0,sizeof(dis)); memset(path,0,sizeof(path)); for(int j=1;j<n;j++) { int f=0; for(int i=0;i<m;i++) { if(dis[Edge[i].u]<dis[Edge[i].v]+Edge[i].w||(dis[Edge[i].u]==dis[Edge[i].v]+Edge[i].w&&Edge[i].v<path[Edge[i].u])) { f=1; dis[Edge[i].u]=dis[Edge[i].v]+Edge[i].w; path[Edge[i].u]=Edge[i].v; } }//因为找最大的路径长度,所以经过的点是不确定的,但是有一点是确定的就是出发点是, if(!f)//源点,结束点是会点;所以不从哪一个开始都可以进行不断的松弛,知道没有电再能松弛是结束; {// break; } }//这个地方用的是源点为出发点,上面是到变得出发点的松弛,但是如果是从结束点开始的话就是 int k=s;//到汇点的松弛,只不过这样的话那个路径保存护士倒着的,可以再用数组处理一下; printf("%d\n",dis[s]); while(path[k]!=0)//很骚的一布操作,用来打印路径的; { printf("%d %d\n",k,path[k]); k=path[k]; }}
阅读全文
0 0
- AOE 关键路径
- AOE 关键路径求解
- AOE求关键路径
- AOE关键路径
- AOE关键路径
- AOE关键路径
- AOE网--求关键路径
- 求关键路径、AOE网
- AOE图的关键路径
- AOE网与关键路径
- 关键路径与AOE网
- AOE网求关键路径
- 求关键路径(AOE)
- 关键路径(AOE网)
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- java中参数传递详解:call by value(按值传递)和 call by reference(按引用传递)
- java块级作用域测试总结
- JSON 数组
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZde
- CCF 1038 玩扑克
- AOE关键路径
- PHP+shell实现多线程的方法
- 第七周
- 成了精的太师椅·化蝶·七
- anaconda镜像不要再用清华的了!
- 火狐、谷歌等浏览器打印页面PDF
- switch选择语句测试总结
- Ubuntu PostgreSQL安装和配置
- ubuntu16.04 配置caffe CPU,anaconda2