暴力DFS。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<queue>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std; const int maxn=+;
int n,m;
string st;
map<string ,int>m1;
map<int ,string>m2;
int sz;
int h[maxn];
struct Edge
{
int u,v,c;
}e[maxn*maxn];
int tot;
vector<int>g[maxn]; int des;
int ans_cost=0x7FFFFFFF;
int ans_count=;
int ans_happy=;
int ans_point=;
int path[maxn],ans_path[maxn];
bool flag[maxn]; void dfs(int x,int cost,int happy,int point)
{
if(cost>ans_cost) return;
if(x==des)
{
if(cost<ans_cost)
{
ans_cost=cost;
ans_count=;
ans_happy=happy;
ans_point=point;
for(int i=;i<point;i++)
ans_path[i]=path[i];
} else if(cost==ans_cost)
{
ans_count++;
if(happy>ans_happy)
{
ans_happy=happy;
ans_point=point;
for(int i=;i<point;i++)
ans_path[i]=path[i];
} else if(happy==ans_happy)
{
if(point<ans_point)
{
ans_point=point;
for(int i=;i<point;i++)
ans_path[i]=path[i];
}
}
}
return;
} for(int i=;i<g[x].size();i++)
{
int id=g[x][i];
path[point]=e[id].v;
if(flag[e[id].v]==) continue;
flag[e[id].v]=;
dfs(e[id].v,cost+e[id].c,happy+h[e[id].v],point+);
flag[e[id].v]=;
}
} int main()
{
scanf("%d%d",&n,&m); cin>>st;
m1[st]=++sz; m2[sz]=st; for(int i=;i<=n-;i++)
{
string name; cin>>name;
m1[name]=++sz; m2[sz]=name;
int val; scanf("%d",&val);
h[sz]=val;
} des=m1["ROM"]; tot=;
for(int i=;i<=m;i++)
{
string U,V; int c; cin>>U>>V>>c;
e[tot++].u=m1[U]; e[tot].v=m1[V]; e[tot].c=c;
g[m1[U]].push_back(tot); e[tot++].u=m1[V]; e[tot].v=m1[U]; e[tot].c=c;
g[m1[V]].push_back(tot);
} memset(flag,,sizeof flag);
flag[]=;
dfs(,,,); printf("%d %d %d %d\n",ans_count,ans_cost,ans_happy,ans_happy/ans_point); cout<<st;
for(int i=;i<ans_point;i++)
cout<<"->"<<m2[ans_path[i]];
printf("\n"); return ;
}

最新文章

  1. Visulalization Voronoi in OpenSceneGraph
  2. css 权重
  3. NET IL命令查询器
  4. git log 格式化输出
  5. unresolved external symbol __report_rangecheckfailure 解决思路
  6. 利用foreach对页面控件的遍历 及三目运算符的使用
  7. ThreadLocal实现线程范围内共享
  8. 【原创】ORA-04068: 已丢弃程序包 的当前状态研究
  9. 【学习笔记】【C语言】结构体
  10. java演示适配器(adapter)模式
  11. sonar-maven-plugin问题
  12. Python之路,Day18 - 开发一个WEB聊天来撩妹吧
  13. HDU5406---CRB and Apple( DP) 2015 Multi-University Training Contest 10
  14. Error: 17053 LogWriter: Operating system error 21(The device is not ready.)
  15. 关于APICloud读取不到虚拟机及数据库的问题
  16. (转)iOS-Runtime知识点整理
  17. 【JavaScript】$.extend使用心得及源码研究
  18. PerformanceCounter蛋痛的设计
  19. 操作系统实现线程的几种模式 和 java创建线程的3个方式
  20. Jenkins Maven Selenium TestNG踩坑记

热门文章

  1. nyoj-586-疯牛|poj-2456-Aggressive cows
  2. Ckeditor for Drupal
  3. java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中
  4. java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)
  5. tkinter学习-滚动条
  6. Linux菜鸟起飞之路【二】Linux基本常识
  7. adb 常用命令详解
  8. Knockout v3.4.0 中文版教程-13-控制文本内容和外观-css绑定
  9. PYDay10&amp;11&amp;12&amp;13-常用模块:time|datetime|os|sys|pickle|json|xml|shutil|logging|paramiko、configparser、字符串格式化、py自动全局变量、生成器迭代器
  10. Mac设置命令别名