南邮 OJ 1132 大飞机项目
来源:互联网 发布:linux没有make命令 编辑:程序博客网 时间:2024/04/19 12:42
大飞机项目
总提交 : 80 测试通过 : 15
比赛描述
大飞机指起飞总重超过100吨的运输类飞机,包括军用大型运输机和民用大型运输机,也包括一次航程达到3000公里的军用或100座位以上的民用客机。国际航运体系习惯上把300座位以上的客机称作“大型客机”,在我国,一般把150座以上客机称为“大型客机”。
随着民用航空快速发展和国防现代化步伐加快,中国对大型飞机的需求日益紧迫。自主研制大型飞机,发展有市场竞争力的航空产业,对于转变经济增长方式、带动科学技术发展、增强国家综合实力和国际竞争力,加快现代化步伐,具有重大意义。中国航空工业经过多年的发展,已经具备发展大型飞机的技术和物质基础。2007年2月,国务院原则批准大型飞机研制重大科技专项正式立项。
但自主制造大飞机非常复杂,需要在全球范围内配置部件,联合多个公司通力合作才能完成。假设从开始制造到完成一架飞机中间需要完成n个部件,这些部件可能由多个公司协作完成有关部分(称为一道工序),当然每道工序所耗费的时间可能是不同的。现请你根据给定数据,确定哪些工序是关键的,不能提早,也不能拖延。
输入
第一行是一个正整数:测试用例数目,最多为100。之后,每个测试用例包括多行:
l 第1行给出两个整数(空格分隔),第一个整数表示部件数n,2≤n≤200,第二个整数表示工序数m,0≤m≤20100。
l m行,每行三个整数(空格分隔),前两个整数表示两个部件;第三个整数表示涉及上述两个部件的工序需要花费的时间t,部件用序号表示,分别为1,…,n,这里假设飞机制造启动用0号序号表示,飞机制造完成用n+1号序号表示;一道工序用前后的部件表示,例如,如果1和2部件之间存在一道工序,则这道工序表示为(1,2)
输出
对于每个测试用例:
l 按照制造顺序给出关键工序
注意:(1)每个测试用例关键工序之间没有空格;
(2)输出部分的结尾要求包含一个多余的空行。
(3)(4,5)和(4,7)均为关键工序时,先输出(4,7),再输出(4,5)
样例输入
2
1 2
0 1 1
1 2 2
2 4
0 1 2
1 2 3
2 3 5
0 3 18
样例输出
(0,1)(1,2)
(0,3)
题目来源
算法与数据结构设计考核赛2009
#include<iostream>#define N 202int main(){int T,n,m,i,j,t,a[N][N],earlist[N],latest[N],prev[N],next[N],temp;bool visited[N];scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);n += 2;for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=0;}prev[i]=0;next[i]=0;earlist[i]=0;visited[i]=0;latest[i]=INT_MAX;}while(m--){scanf("%d%d%d",&i,&j,&t);a[i][j]=t;prev[j]++;next[i]++;}i=0;earlist[0]=0;visited[0]=1;while(i<n){for(j=0;j<n;j++){if(a[i][j]){prev[j]--;temp= earlist[i]+a[i][j];if(temp>earlist[j]){earlist[j]=temp;//最早开始时间,算最小的}}}for(i=0;i<n;i++){if(!visited[i] && 0==prev[i]){visited[i]=1;break;}}}for(i=0;i<n;i++){visited[i] = 0;}j=n-1;latest[0]=0;latest[j]=earlist[j];visited[j]=1;while(j>0){for(i=n-2;i>0;i--){if(a[i][j]){next[i]--;temp = latest[j]-a[i][j];if(latest[i]>temp){latest[i]=temp;//最晚开始时间,记录最小的}}}for(j=n-2;j>0;j--){if(!visited[j] && 0==next[j]){visited[j]=1;break;}}}t=0;//t记录关键点个数,就存在prev好了for(i=0;i<n;i++){if(earlist[i]==latest[i]){prev[t++]=i;}}for(i=0;i<t;i++){for(j=t-1;j>i;j--){if(earlist[prev[i]]+a[prev[i]][prev[j]]==earlist[prev[j]]){printf("(%d,%d)",prev[i],prev[j]);}}}printf("\n");}}
- 南邮 OJ 1132 大飞机项目
- 国防科工委:中国正在论证大飞机研制项目
- 南邮 OJ 1049 飞机最少换乘次数问题
- 中国大飞机
- Python-飞机大战项目
- 南邮 OJ 1447 大作业
- 大飞机还是一个难题
- java飞机游戏小项目
- 【Java小项目】打飞机
- coco2d-x打飞机项目
- 【Python学习】飞机大战项目
- Android 项目之飞机大战
- 南邮 OJ 2071 大发明家的童年
- 滚屏游戏-大空飞机
- 飞机
- 飞机
- 飞机
- 飞机
- 那些年写过的有趣注释
- 开发者必知的五大编程谬论
- 窗口特效
- 批量修改文件和文件夹权限
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- 南邮 OJ 1132 大飞机项目
- zoj 2100Seeding(dfs+回溯)
- SIP Dialog,Transaction(Branch)
- Android fb0 截屏实现
- python os
- HDU 5348 MZL's endless loop
- C++之归并排序
- 《深入理解Nginx》笔记之 HTTP请求的11个处理阶段
- hdu5335Walk Out bfs+贪心