最短路。

枚举垃圾箱放哪里,然后算最短路。

#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<queue>
#include<string>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std; int n,m,k,ds;
char u[];
vector<int>g[]; int v[][];
int dis[], f[];
int fail=; int ansLen=-,avg=-,id=-; int get()
{
int sum=;
if(u[]!='G')
{
for(int i=;u[i];i++) sum=sum*+u[i]-'';
}
else
{
for(int i=;u[i];i++) sum=sum*+u[i]-'';
sum = sum + n;
}
return sum;
} void spfa(int x)
{
for(int i=;i<=n+m;i++) dis[i] = 0x7FFFFFFF;
queue<int>Q; memset(f,,sizeof f);
dis[x]=; f[x]=; Q.push(x); while(!Q.empty())
{
int h= Q.front(); Q.pop(); f[h]=; for(int i=;i<g[h].size();i++)
{
int to = g[h][i];
if(dis[h]+v[h][to]<dis[to])
{
dis[to] = dis[h]+v[h][to];
if(f[to]==)
{
f[to]=;
Q.push(to);
}
}
}
} for(int i=;i<=n;i++) if(dis[i]>ds) return ; fail=; int mi=0x7FFFFFFF,sum=;
for(int i=;i<=n;i++) sum=sum+dis[i],mi = min(mi,dis[i]); if(id==-)
{
id = x;
ansLen = mi;
avg = sum;
} else
{
if(mi>ansLen)
{
id = x;
ansLen = mi;
avg = sum;
}
else if(mi==ansLen)
{
if(sum<avg)
{
id = x;
ansLen = mi;
avg = sum;
}
}
}
} int main()
{
scanf("%d%d%d%d",&n,&m,&k,&ds);
for(int i=;i<=k;i++)
{
int c;
scanf("%s",u); int A = get();
scanf("%s",u); int B = get();
scanf("%d",&c); v[A][B]=v[B][A]=c;
g[A].push_back(B); g[B].push_back(A);
} for(int i=n+;i<=n+m;i++)
{
spfa(i);
} if(fail) printf("No Solution\n");
else
{
printf("G%d\n",id-n);
printf("%.1f %.1f\n",1.0*ansLen,1.0*avg/n);
} return ;
}

最新文章

  1. Oracle 数据库知识汇总篇
  2. 自定义Dialog宽度占满屏幕
  3. [转]xml文件中的转义字符
  4. velocity使用知识总结
  5. 递归算法(二)&mdash;&mdash;前缀转后缀
  6. jquery 地址栏链接与a标签链接匹配 特效代码总结(二)
  7. yum安装 lnmp
  8. coreData旧版本增加字段,新版本是否可以继续使用旧版本内容的测试(MagicalRecord的使用)
  9. hbase的rowkey简单设计
  10. asp.net后台向前端输出js脚本的三种方法
  11. ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
  12. php 进行跨域操作
  13. koa 写简单服务
  14. Python的数据库操作(pymysql)
  15. apk的api级别不要低于26
  16. 多个窗口开启后,切换到指定title的窗口
  17. Maven 私服 Nexus 权限控制
  18. Kubernetes网络模型概念
  19. bzoj 1047 单调队列
  20. grub的安装与配置-------引导redhat grub

热门文章

  1. js遇到问题汇总
  2. html 制作静态页面新知识
  3. Chrome profile manager
  4. python大数据挖掘系列之淘宝商城数据预处理实战
  5. java map 转 json 自编封装
  6. js函数定义方法
  7. 通过编译函数库来学习GCC【转】
  8. 【swupdate文档 一】嵌入式系统的软件管理
  9. python安装基础
  10. EXT入门学习