【PAT】1072. Gas Station
来源:互联网 发布:撤销中国根域名服务器 编辑:程序博客网 时间:2024/05/21 11:20
考查点:Dijkstra算法
思路:第一次输入少了&,第二次本题是1到n+m,缺少了+m,还有id转化两次写错,第一次==写错成=,第二次忽视了数字为多位数的情况,浪费时间最多的是调用ds时应该从起点s+n而不是s+m,另外,本题最求最大的最近距离,变量应设为里dmax里面才是dmin
#define LOCAL#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#define FOR(i, x, y) for(int i = x; i <= y; i++)#define rFOR(i, x, y) for(int i = x; i >= y; i--)#define MAX 1030#define oo 0x3f3f3f3fusing namespace std;int G[MAX][MAX],pre[MAX],dis[MAX],vis[MAX],n,m;int change(char str[]){ int i=0,len=strlen(str),id=0; while(i<len){ if(str[i]!='G'){ id=id*10+str[i]-'0'; } i++; } if(str[0]=='G')return id+n; else return id;}void DJ(int s){ fill(dis,dis+MAX,oo); memset(vis,0,sizeof(vis)); dis[s]=0; for(int i=0;i<n+m;i++){ int MIN=oo; int u=-1; for(int j=1;j<=n+m;j++) { if(vis[j]==0&&dis[j]<MIN){ MIN=dis[j]; u=j; } } if(u==-1) return; vis[u]=1; for(int v=1;v<=n+m;v++){ if(vis[v]==0&&G[u][v]!=oo){ if(dis[v]>G[u][v]+dis[u]){ dis[v]=dis[u]+G[u][v]; } } } }}int main(){ #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif // LOCAL int k,ds; fill(G[0],G[0]+MAX*MAX,oo); scanf("%d%d%d%d",&n,&m,&k,&ds); char str[5],st[5]; int x; for(int i=0;i<k;i++) { scanf("%s %s %d",str,st,&x); int id1=change(str); int id2=change(st); G[id1][id2]=G[id2][id1]=x; } double dmax=-1,avg=0;int ans=-1; FOR(s,1,m) { double tmin=oo,tavg=0; DJ(s+n); FOR(i,1,n){ if(dis[i]<=ds){ tavg+=dis[i]; if(dis[i]<tmin) tmin=dis[i]; }else{ tmin=oo;break; } } if(tmin!=oo){ if(dmax<tmin){ ans=s,dmax=tmin,avg=tavg; }else if(dmax==tmin){ if(avg>tavg){ ans=s,dmax=tmin,avg=tavg; } } } } if(ans==-1)printf("No Solution"); else{ printf("G%d\n%.1f %.1f",ans,dmax,avg/n); } return 0;}
0 0
- PAT 1072. Gas Station
- PAT 1072. Gas Station
- PAT 1072. Gas Station
- 【PAT】1072. Gas Station
- pat 1072. Gas Station
- PAT-1072. Gas Station(DIJKSTRA)
- PAT 1072. Gas Station (dijkstra)
- PAT 1072. Gas Station (30)
- PAT 1072. Gas Station (30)
- 【PAT】1072. Gas Station (30)
- PAT 1072. Gas Station (30)
- 浙大PAT 1072题 1072. Gas Station
- PAT A 1072. Gas Station (30)
- PAT甲级练习1072. Gas Station (30)
- 1072. Gas Station (30) PAT 甲级
- PAT甲级1072. Gas Station (30)
- PAT-A-1072. Gas Station (30)
- 【PAT甲级】1072. Gas Station (30)
- 职责链模式(23)
- Spark MLlib系列(二):基于协同过滤的电影推荐系统
- java源码解读之Integer
- 文本,块的位置
- Fibonacci数列以及蓝桥杯Fibonacci数列%10007
- 【PAT】1072. Gas Station
- android中跨进程通讯的4种方式
- Spring配置EL表达式
- Perf -- Linux下的系统性能调优工具,第 1 部分
- 华为OJ:蛇形矩阵
- 监控系统-小米监控
- 深入理解 JavaScript 中的函数
- POJ 3408 The Domino Principle 可能会
- 关于STL中的Vector,list和deque