CSP考试 2015年03月第5题 C语言实现
来源:互联网 发布:js 数组变量 编辑:程序博客网 时间:2024/06/04 22:52
#include <stdio.h>main(){//吃了吗//需要栈 //int NUM1=6;//int NUM2=4;int NUM1;int NUM2;int i;scanf("%d",&NUM1);scanf("%d",&NUM2);int p[NUM1+1];p[0]=-1;/* p[1]=1;p[2]=7;p[3]=3;p[4]=2;p[5]=5;p[6]=6;*/for(i=1;i<NUM1+1;i++){scanf("%d",&p[i]);}int a[NUM1-1];//线路可以染色 int b[NUM1-1];int c[NUM1-1];int color[NUM1-1];for(i=0;i<NUM1-1;i++){color[i]=0;}for(i=0;i<NUM1-1;i++){scanf("%d",&a[i]);scanf("%d",&b[i]);scanf("%d",&c[i]);}/*a[0]=1,b[0]=2,c[0]=4;a[1]=1,b[1]=3,c[1]=5;a[2]=2,b[2]=4,c[2]=1;a[3]=3,b[3]=5,c[3]=2;a[4]=3,b[4]=6,c[4]=1; */int e[NUM2];int f[NUM2];for(i=0;i<NUM2;i++){scanf("%d",&e[i]);scanf("%d",&f[i]);}/*e[0]=2,f[0]=5;e[1]=4,f[1]=6;e[2]=6,f[2]=4;e[3]=5,f[3]=6;*/int zhan[NUM1];//栈 for(i=0;i<NUM1;i++){zhan[i]=0;//printf("%d",i);}int h=0;int flag;int j;int find;int lu;//printf("hello\n");for(lu=0;lu<NUM2;lu++)//lu=2;{if(lu==2){//break;}//printf("lu %d\n",lu);for(i=0;i<NUM1;i++){zhan[i]=0;//printf("%d",i);}h=0;//栈的使用要小心 for(i=0;i<NUM1-1;i++){color[i]=0;}//别忘了初始化 zhan[0]=e[lu];//int nei=-1;for(find=e[lu];find!=f[lu];)////find=e[1];{//printf("hello %d\n",lu);//printf("lu %d\n",lu);if(nei==0)//从栈里弹出一个 {//不改变color h--;//printf("hello\n");find=zhan[h];//break;}if(find==e[lu])//{//printf("find %d\n",find);}nei=0;for(i=0;i<NUM1-1;i++){if((a[i]==find)&&(color[i]==0))//在数组a中寻找 {nei=1;flag=0;for(j=0;j<=h;j++)//从栈里检查 {if(zhan[j]==b[i]){flag=1;}}if(flag==0){h++;zhan[h]=b[i];color[i]=1;find=b[i];//printf("find %d\n",find);}}if((b[i]==find)&&(color[i]==0))//在数组b中寻找 {//printf("%d\n",b[i]); nei=1;flag=0;for(j=0;j<=h;j++)//从栈里检查 {if(zhan[j]==a[i]){flag=1;//printf("j %d\n",j);}}if(flag==0){//printf("hello\n");h++;zhan[h]=a[i];color[i]=1;find=a[i];//printf("find %d\n",find);}}}//nei=1; } for(i=0;i<NUM1;i++){//if(zhan[i]!=0){//printf("%d\n",zhan[i]);}//printf("%d",i);}//算吃的 int pri=p[zhan[0]];int money=0;for(i=0;i<NUM1;i++){if(zhan[i]==0){break;}for(j=0;j<NUM1-1;j++){if((a[j]==zhan[i])&&(b[j]==zhan[i+1])){if(p[zhan[i]]<pri){pri=p[zhan[i]];}money=money+pri*c[j];//printf("money %d\n",money);}else if((b[j]==zhan[i])&&(a[j]==zhan[i+1])){if(p[zhan[i]]<pri){pri=p[zhan[i]];}money=money+pri*c[j];//printf("money %d\n",money);}}} printf("%d\n",money); }}
0 0
- CSP考试 2015年03月第5题 C语言实现
- CSP考试 2015年03月第1题 图像旋转 C语言实现
- CSP考试 2015年03月第2题 数字排序 C语言实现
- CSP考试 2015年03月第4题 C语言实现
- CSP考试 2015年03月第3题 节日 C语言实现
- CSP考试 2015年03月第4题 网络延时 C语言实现
- CSP考试 2014年03月第1题 相反数 C语言实现
- CSP考试 2014年03月第2题 窗口 C语言实现
- CSP考试 2015年9月第1题 数列分段 C语言实现
- CSP考试 2015年9月第2题 日期计算 C语言实现
- CSP考试 2015年09月第4题 C语言实现
- CSP考试 2015年09月第3题 C语言实现
- CSP考试 2015年12月第1题 数位之和 C语言实现
- CSP考试 2015年12月第2题 消除类游戏 C语言实现
- CSP考试 2013年12月第5题 I’m stuck! C语言实现
- CSP考试 2014年09月第1题 相邻数对 C语言实现
- CSP考试 2014年12月第1题 门禁系统 C语言实现
- CSP考试 2014年12月第2题 Z字形扫描 C语言实现
- 关系型数据库工作原理-事务管理(二)(翻译自Coding-Geek文章)
- java和js互调
- Bzoj2084:[Poi2010]Antisymmetry:manachar算法
- 检查OGG占用端口的命令
- C/C++不同文件夹下包含头文件的方法及#include的使用
- CSP考试 2015年03月第5题 C语言实现
- 在程序中表示负无穷大的数
- cocos2d-Lua01Lua基础语法
- 【CodeForces】[614A]Link/Cut Tree
- OGG孤儿server进程的检查与处理
- Java 实例升级篇
- Red Hat Enterprise Linux Server 7.1 x86_64 下载
- cocos2d-Lua02Lua面向对象
- U盘作为启动盘的重装系统教程