PAT1087
2016-08-02 11:31
549 查看
#include<cstdio> #include<iostream> #include<string> #include<map> #include<cstring> #include<vector> using namespace std; #define inf 0x3f3f3f3f map <string,int> tran; map <int,string> tran2; int mincost=inf,num=0,hap=0; int avghap=0; int h[205]; int cost[205][205]; int visit[205]; int n,m; vector <int> path,res; void dfs(int s,int nodenum,int nodecost,int nodehap) { if(s==tran["ROM"]) { if(nodecost<mincost) { mincost=nodecost; num=1; hap=nodehap; avghap=nodehap/(nodenum); res=path; } else if(nodecost==mincost) { num++; if(nodehap>hap) { hap=nodehap; avghap=nodehap/(nodenum); res=path; } else if(nodehap==hap&&nodehap/(nodenum)>avghap) { avghap=nodehap/(nodenum); res=path; } } } if(nodecost>mincost) return; for(int i=1;i<n;i++) { if(visit[i]==0&&cost[s][i]!=inf) { path.push_back(i); visit[i]=1; dfs(i,nodenum+1,nodecost+cost[s][i],nodehap+h[i]); visit[i]=0; path.pop_back(); } } } int main() { string s; cin>>n>>m>>s; int ans=0; memset(visit,0,sizeof visit); for(int i=0;i<n;i++) for(int j=0;j<n;j++) { cost[i][j]=i==j?0:inf; } tran[s]=0; tran2[0]=s; h[0]=0; for(int i=0;i<n-1;i++) { string name; cin>>name>>h[i+1]; tran[name]=i+1; tran2[i+1]=name; } for(int i=0;i<m;i++) { string a,b; int x; cin>>a>>b>>x; if(cost[tran[a]][tran[b]]>x) { cost[tran[a]][tran[b]]=x; cost[tran[b]][tran[a]]=x; } } visit[0]=1; path.push_back(0); dfs(tran[s],0,0,0); cout<<num<<' '<<mincost<<' '<<hap<<' '<<avghap<<endl; for(int i=0;i<res.size();i++) { cout<<tran2[res[i]]; if(i!=res.size()-1) cout<<"->"; } return 0; }
相关文章推荐
- Android实现机制(三)——View事件分发机制
- 浅谈struts
- Spark生态之Spark BlinkDB
- Could not load file or assembly 'Microsoft.AnalysisServices.SharePoint.Integration'
- HAProxy 基本翻译
- 配置泛微OA支持修改AD密码
- zookeeper详解(三)-- paxos算法以及zookeeper中的实现
- AUI中的tapmode属性详解
- jQuery源码研究分析学习笔记-jQuery.buildFragment()(六)
- 用 Python 绘制音乐图谱
- 如何加载全国8000G离线谷歌卫星地图并进行标注
- IOS动画中的枚举UIViewAnimationOptions
- SQL表连接查询(inner join、full join、left join、right join)
- batik1.8相对于1.7的改进
- 使用Maven自动部署插件
- 基础知识 打印图形及常见问题
- crash日志处理daiyelang
- JSP九大内置对象和四个作用域
- JavaWeb之session
- 最小生成树