8.3 脚疼

Problem 3     foot.pas/c/cpp(foot.in     foot.out )

【背景】

放暑假了,Bingo要拜访他的梦中情人XXBingo有一张地图,地图上标有从Bingo家到XX家的路线,这些路线上还有其他的MM家。Bingo想趁着放假见XX的机会顺道见见所有的MM。但是衡中把Bingo折磨的很惨:在每天急急忙忙的来回穿梭中,Bingo把脚给使坏了,不能走很多路。所以有的MM是拜访不了了,Bingo找出了几个必须拜访的MM,把她们家在地图上标了出来。Bingo想找出一条从他家出发能够经过所有必须拜访的MM家的并且能到达他的梦中情人XX家的路,并且最短。可是Bingo一想起XX就开始YY,没有任何能力思考其他事情了,所以请你来帮忙。

【题目描述】

 给出你地图上每一条路的信息以及Bingo必须拜访的MM,找出一条路,满足从Bingo家出发经过所有Bingo必须拜访的MM家(不一定按照给出的顺序拜访)并且能够到达XX家并且最短。

【输入】

第一行3个整数n,m,tn表示地图上有编号为1..nn个家,Bingo家为1XX家为n

其他MM家编号为2..n-1m表示地图上有m条路(双向)。T表示Bingo必须拜访的MMt个。

第二行为t个整数,为Bingo必须拜访的tMM家在地图上的编号。

以下m行每行有3个整数j,k,q。表示编号为j的家与编号为k的家有一条长度为q的路。(注意不只是其他MM家,也可能是Bingo家或XX,也就是jk可能等于1n)。

【输出】

一个整数 为满足条件的路的长度。

【样例】

foot.in

5 10 2

2 3

1 2 5

1 3 45

1 4 61

1 5 81

2 3 9

2 4 91

2 5 4

3 4 74

3 5 42

4 5 61

foot.out

27

 

【时间,内存限制】

 各个测试点1s64M.

【数据规模】

n<=200.

M<=20000.

T<=10.

最短路程不会超过1000000

思路:把每个必经点的单源最短路求出来,然后排列T个点的访问顺序,寻找最优解。

程序:

var
  a,d:array[1..200,1..200]of longint;
  b:array[1..200,0..200]of integer;
  v,f:array[1..200]of boolean;
  q:array[1..200000]of longint;
  vip:array[1..10]of longint;
  n,m,i,t,j,k,ans:longint;
procedure spfa(x:longint);
var
  h,t,now,i,j:longint;
begin
  for i:=1 to n do d[x,i]:=123456789;
  d[x,x]:=0;
  fillchar(v,sizeof(v),0);
  v[x]:=true;
  h:=0;t:=1;
  q[1]:=x;
  while h<t do
   begin
     h:=h+1;
     now:=q[h];
     for i:=1 to b[now,0] do
      if d[x,b[now,i]]>d[x,now]+a[now,b[now,i]] then
       begin
         d[x,b[now,i]]:=d[x,now]+a[now,b[now,i]];
         if not v[b[now,i]] then
          begin
            v[b[now,i]]:=true;
            t:=t+1;
            q[t]:=b[now,i];
          end;
       end;
     v[now]:=false;
   end;
end;
procedure init;
var
  x,y,z:longint;
begin
  readln(n,m,t);
  for i:=1 to t do read(vip[i]);
  for i:=1 to m do
   begin
     readln(x,y,z);
     inc(b[x,0]);
     b[x,b[x,0]]:=y;
     a[x,y]:=z;
     inc(b[y,0]);
     b[y,b[y,0]]:=x;
     a[y,x]:=z;
   end;
end;
procedure dfs(l,cou,x:longint);
var
  i,j:longint;
begin
  if cou<=t then
   begin
     for i:=1 to t do
      if not f[vip[i]] then
       begin
         f[vip[i]]:=true;
         dfs(l+d[x,vip[i]],cou+1,vip[i]);
         f[vip[i]]:=false;
       end;
   end
  else
     if l+d[x,n]<ans then ans:=l+d[x,n];
end;
procedure doit;
begin
  spfa(1);
  for i:=1 to t do spfa(vip[i]);
  fillchar(f,sizeof(f),0);
  ans:=maxlongint;
  dfs(0,1,1);
  writeln(ans);
end;
begin
  assign(input,'Foot.in');
  assign(output,'Foot.out');
  reset(input);
  rewrite(output);
  init;
  doit;
  close(input);
  close(output);
end.
反思:当时用spfa循环队列结果不对,很奇怪。。。以后还是少用循环队列吧。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VMcenter 8.3 是一种虚拟化管理软件,它可以帮助企业和组织对其虚拟化环境进行更加高效和集中的管理。作为一种中心控制台,VMcenter 8.3 提供了一个统一的界面,方便管理员对虚拟机、主机、存储和网络进行监控和管理。 首先,VMcenter 8.3 支持对虚拟机进行集中管理。管理员可以通过界面方便地创建、启动、关闭和迁移虚拟机。此外,VMcenter 8.3 还提供了资源调度的功能,可以自动对虚拟机进行负载均衡,以确保资源的合理分配,提高系统的整体性能。 其次,VMcenter 8.3 可以对主机进行集中管理。管理员可以通过界面监控主机的状态和性能指标,例如 CPU 利用率、内存使用情况和网络流量等。对于出现故障或性能下降的主机,VMcenter 8.3 还可以自动实施故障转移或主机迁移操作,以确保应用的可用性和持续运行。 此外,VMcenter 8.3 还提供了对存储和网络的管理功能。管理员可以通过界面轻松地管理存储设备和存储资源,以及配置和监控网络的连接和带宽。这些功能使管理员能够更好地控制和优化虚拟化环境的存储和网络资源。 总之,VMcenter 8.3 是一款功能强大的虚拟化管理软件,可以帮助企业更加高效地管理其虚拟化环境。通过集中管理和监控虚拟机、主机、存储和网络,VMcenter 8.3 提供了全面的管理和控制能力,帮助企业降低成本、提高资源利用率和应用的可用性。 ### 回答2: VMCenter 8.3是什么? VMCenter 8.3是一款虚拟化管理软件,由一家名为VMware的公司开发。它提供了一种集中管理虚拟化基础架构的解决方案,适用于中小型企业和大型企业的IT环境。通过VMCenter 8.3,用户可以简化管理流程,提高IT资源利用率,降低管理成本。 VMCenter 8.3的主要功能包括虚拟机的创建、部署和管理,资源调度和负载均衡,虚拟网络和存储管理,以及性能监测和故障恢复等。它将各个物理服务器上的资源整合在一起,形成一个虚拟化集群,用户可以通过统一的管理界面对其进行集中管理和监控。 通过VMCenter 8.3,用户可以方便地创建新的虚拟机,设置虚拟机的硬件配置和网络设置,并对其进行部署和克隆。同时,用户可以根据不同的业务需求进行资源调度和负载均衡,以确保每个虚拟机获得足够的计算、存储和网络资源。 此外,VMCenter 8.3还具有灵活的虚拟网络和存储管理功能。用户可以自定义虚拟网络拓扑,为虚拟机分配独立的网络地址和端口,实现不同虚拟机之间的隔离和通信。同时,用户可以对虚拟存储进行配置和管理,包括添加、删除和扩容虚拟硬盘等操作。 最后,VMCenter 8.3还提供了性能监测和故障恢复的功能。用户可以实时监测虚拟机和物理服务器的性能指标,如CPU利用率、内存使用率和网络流量等,及时发现潜在的性能问题。同时,它还具备自动化的故障恢复功能,当虚拟机或物理服务器发生故障时,可以自动将其迁移到其他可用资源上,以保证服务的连续性。 综上所述,VMCenter 8.3是一款功能强大的虚拟化管理软件,可以帮助用户简化管理流程,提高资源利用率,降低管理成本,并提供灵活的虚拟网络和存储管理功能,以及性能监测和故障恢复的能力。 ### 回答3: VMCenter 8.3是一种虚拟机管理软件,它提供了强大的虚拟化管理功能。通过VMCenter 8.3,用户可以轻松配置、部署和管理虚拟机,实现资源的高效利用和灵活的性能调整。 首先,VMCenter 8.3提供了直观且易于使用的用户界面,使得用户可以方便地进行虚拟机的操作。用户可以通过界面直接创建新的虚拟机,并为其分配所需的资源,例如处理器、内存和存储空间。同时,用户还可以根据实际需要,对虚拟机进行动态的资源调整,以满足不同的工作负载需求。 其次,VMCenter 8.3支持虚拟机的集中管理。用户可以通过VMCenter 8.3对多台虚拟机进行集中管理,而不需要分别登录到每台虚拟机进行操作。通过VMCenter 8.3,用户可以在一个界面上监控虚拟机的状态、性能和资源使用情况,并进行统一的任务调度和管理。这样,用户可以更加高效地管理和利用虚拟化资源。 此外,VMCenter 8.3还提供了高级的虚拟机管理功能。用户可以通过VMCenter 8.3进行虚拟机的迁移和克隆操作,以实现虚拟机的动态调度和备份。同时,VMCenter 8.3还支持虚拟机的模板和快照功能,使得用户可以将一个虚拟机配置好后保存为模板,以便后续快速部署相同配置的虚拟机。 总之,VMCenter 8.3是一款功能强大的虚拟机管理软件,它提供了直观的用户界面、集中的虚拟机管理和高级的虚拟机操作功能。通过VMCenter 8.3,用户可以更加方便、高效地管理和利用虚拟化资源,从而提升企业的IT资源利用率和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值