浙大PAT 1018题 1018. Public Bike Management
来源:互联网 发布:c 程序员面试宝典 编辑:程序博客网 时间:2024/06/15 00:04
本题用Dijstra或者搜索。
dfs代码如下:
#include<stdio.h>#include<stdlib.h>#define maxn 0x7fffffffstruct Node_Type{int dis;int bsend;int bback;int path[508];}res,cur;int c,n,s,m,cnt=0;int bk[508],rel[508][508],vst[508];void dfs(int p){int i,j;if(p==s){if(cur.dis<res.dis){res=cur;}else if(cur.dis==res.dis){if(cur.bsend<res.bsend){res=cur;}else if(cur.bsend==res.bsend){if(cur.bback<res.bback){res=cur;}}}return;}for(i=1;i<=n;i++){if(vst[i]==0&&rel[p][i]!=-1){vst[i]=1;int distmp=cur.dis;int bsendtmp=cur.bsend;int bbacktmp=cur.bback;cur.dis+=rel[p][i];int tmp=bk[i]-c/2;if(tmp>=0){ cur.bback+=tmp;}else{ tmp=-tmp;if(tmp<=cur.bback){cur.bback-=tmp;}else{cur.bsend+=(tmp-cur.bback);cur.bback=0;}}cnt++;cur.path[cnt]=i;dfs(i);cnt--;cur.dis=distmp;cur.bsend=bsendtmp;cur.bback=bbacktmp;vst[i]=0;}}}int main(){int i,j;int si,sj,tij;scanf("%d %d %d %d",&c,&n,&s,&m);for(i=1;i<=n;i++){scanf("%d",&bk[i]);}for(i=0;i<=n;i++){vst[i]=0;for(j=0;j<=n;j++){rel[i][j]=-1;}}for(i=1;i<=m;i++){scanf("%d %d %d",&si,&sj,&tij);rel[si][sj]=tij;rel[sj][si]=tij;}cur.dis=0;cur.bsend=0;cur.bback=0;res.dis=maxn;res.bsend=maxn;res.bback=maxn;dfs(0);printf("%d %d",res.bsend,0);for(i=1;res.path[i]!=s;i++){ printf("->%d",res.path[i]); } printf("->%d",s); printf(" %d\n",res.bback); return 0;}
0 0
- 浙大PAT 1018题 1018. Public Bike Management
- 浙大 PAT Advanced level 1018. Public Bike Management (30)
- PAT 1018. Public Bike Management
- 【PAT】1018. Public Bike Management
- 【PAT】1018. Public Bike Management
- PAT 1018. Public Bike Management
- PAT 1018. Public Bike Management
- PAT 1018 Public Bike Management
- 1018. Public Bike Management (30)-PAT
- PAT A 1018.Public Bike Management (30)
- pat 1018. Public Bike Management (30)
- PAT 1018. Public Bike Management (30)
- PAT 1018. Public Bike Management (30)
- PAT 1018. Public Bike Management (30)
- 【PAT】1018. Public Bike Management (30)
- PAT 1018. Public Bike Management (30)
- PAT(A) - 1018. Public Bike Management (30)
- 【PAT甲级】1018. Public Bike Management (30)
- 伪类,伪元素区别
- JQuery UI - resizable
- 浮点数的表示方法
- 如何更改xcode里面的字体
- STD::FUNCTION
- 浙大PAT 1018题 1018. Public Bike Management
- Typical Install Configuration
- 2049——不容易系列之(4)——考新郎
- Linux USB 串口传输速率提升设计
- Struts2原理详解
- 清华差生10年奋斗经历
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- Linux dirname、basename 指令
- Code::blocks 下用_beginthreadex创建一个简单的线程