Solution

经典bfs,所有的点到店的最短距离

其中一开始队列的长度为店的数目

一个点可能有多个订单

关于数据大小:

1.
1000*(1000*1000)*2000=2,0000,0000,0000
订餐量*客户的数量*距离
总数用__int64
2.
1000*(1000*1000)=10,0000,0000
订餐量*客户的数量
一个数总数用long

Code:

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define maxn 1000 /*
1.
1000*(1000*1000)*2000=2,0000,0000,0000
订餐量*客户的数量*距离
总数用__int64
2.
1000*(1000*1000)=10,0000,0000
订餐量*客户的数量
一个数总数用long
*/ struct node
{
long x,y;
}; long dx[]={-,,,},dy[]={,-,,};
long amount[maxn+][maxn+],dist[maxn+][maxn+];
__int64 ans=;
struct node que[maxn*maxn+]; int main()
{
long head,tail,n,m,k,d,s,i,j,x,y,xx,yy;
scanf("%ld%ld%ld%ld",&n,&m,&k,&d);
head=;
tail=;
for (i=;i<=n;i++)
for (j=;j<=n;j++)
dist[i][j]=-;
for (i=;i<=m;i++)
{
scanf("%ld%ld",&x,&y);
dist[x][y]=;
tail++;
que[tail].x=x;
que[tail].y=y;
}
for (i=;i<=n;i++)
for (j=;j<=n;j++)
amount[i][j]=;
for (i=;i<=k;i++)
{
scanf("%ld%ld%ld",&x,&y,&s);
amount[x][y]+=s;
}
for (i=;i<=d;i++)
{
scanf("%ld%ld",&x,&y);
dist[x][y]=-;
}
while (head<tail)
{
head++;
for (i=;i<;i++)
{
xx=que[head].x+dx[i];
yy=que[head].y+dy[i];
if (dist[xx][yy]==-)
{
dist[xx][yy]=dist[que[head].x][que[head].y]+;
tail++;
que[tail].x=xx;
que[tail].y=yy;
}
}
}
for (i=;i<=n;i++)
for (j=;j<=n;j++)
ans+=amount[i][j]*dist[i][j];
printf("%I64d\n",ans);
return ;
}

最新文章

  1. MySQL练习-employees数据库(一)
  2. 利用angular结合translate为项目实现国际化
  3. IntelliJ IDEA 12 与 Tomcat7 配置
  4. redis主从 以及认证配置
  5. Knockout 新版应用开发教程之Observable Arrays
  6. C# Window Service详解
  7. 转载:struts标签&lt;s:date&gt;的使用
  8. HDU 1248 寒冰王座(全然背包:入门题)
  9. mysql 时间字段的一些问题
  10. Django框架初识
  11. angular采坑记录
  12. JavaI/O体系详解
  13. OpenLayers3中wfs的属性查询
  14. Flask的上下文源码剖析
  15. 2019年 Gratner数据分析平台对比 - PowerBI大幅领先
  16. Java内存管理之类似-Xms、-Xmx 这些参数的含义
  17. cf789d 图论计数,自环闭环
  18. [Android实例] Android之断点续传下载
  19. Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
  20. FFMpeg笔记(二) 使用FFmpeg对视频进行编解码的一般流程

热门文章

  1. JMeter:响应结果乱码解决方法
  2. AnyProxy做App网络流量测试
  3. 牛客OI赛制测试赛-序列-模拟
  4. JDK+JAVA+maven+IDEA
  5. Week3 关于“微软必应词典客户端”的案例分析
  6. 使用Eclipse可以方便的统计工程或文件的代码行数,
  7. github个人心得
  8. Spring注解 开发
  9. 第五届蓝桥杯C++B组 地宫取宝
  10. 基于Windows Subsystem for Linux (WSL) 【Ubuntu】在WIN10 Home Edition安装Docker