2498 AOE网上的关键路径
来源:互联网 发布:jdk 7u55 linux x64 编辑:程序博客网 时间:2024/05/18 02:02
AOE网上的关键路径
#include <stdio.h> #include <stdlib.h> #include <string.h> struct node { int u,v,w; }edge[50010]; int path[50010],dis[50010],in[50010],out[50010],flag,ans; int lujing(int x,int n,int ans,int m) { int i,j; memset(path,0,sizeof(path)); memset(dis,0,sizeof(dis)); for(j=2;j<=n;j++)//控制循环次数n-1条边 { int temp=0; for(i=1;i<=m;i++) { if((dis[edge[i].u]+edge[i].w>dis[edge[i].v])||//到v点最大权 ((dis[edge[i].u]+edge[i].w==dis[edge[i].v])&&(edge[i].u<path[edge[i].v])))//加起来相等让v的前驱是较小的点(字典序小的为先) { dis[edge[i].v]=dis[edge[i].u]+edge[i].w;//dis是到v点的最大权值 path[edge[i].v]=edge[i].u;//path保留v的前驱点 temp=1; } } if(temp==0) break; } printf("%d\n",dis[ans]); int k=ans; while(path[k]!=0) { printf("%d %d\n",k,path[k]); k=path[k]; } return 0; } int main() { int n,m,i,a,b,c; while(~scanf("%d%d",&n,&m)) { memset(edge,0,sizeof(edge)); memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); edge[i].u=b; edge[i].v=a; edge[i].w=c;//倒过来建 in[a]++; out[b]++; } for(i=1;i<=n;i++) { if(in[i]==0)flag=i;//起始点 if(out[i]==0)ans=i;//终点 } lujing(flag,n,ans,m); } return 0; }
0 0
- SDUT 2498 AOE网上的关键路径
- SDUT-2498-AOE网上的关键路径
- SDUT-2498 AOE网上的关键路径
- SDUT 2498 (AOE网上的关键路径 )
- SDUT 2498 AOE网上的关键路径
- SDUT 2498 AOE网上的关键路径
- 2498 AOE网上的关键路径
- SDUT 2498 AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- AOE网上的关键路径
- android 中action Bar的使用
- andoid自定义dialog实现登陆界面
- 自定义DialogFragment如何与打开它…
- android notification通知的…
- codeforces 382C
- 2498 AOE网上的关键路径
- android 蓝牙bluetooth的简单使用
- 使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理
- android wifi的打开关闭以及…
- Android Sdk Manager 无法下载资源
- android 画廊控件Gallery的使用
- tabHost选项卡的简单使用
- Activity com.example.weibo.…
- nginx超详细讲解之location,rewrite,反向代理及负载均衡