关注
第三题,简单的最短路,看下数据不大,用的简单的 Floyd算法 就可以过(AC) PS:之前发的贴不知道为什么删除了,本着赛后互相分享,互相讨论的初衷,没啥违规的吧
== 参考代码:
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1005;
const int INF = 99999999;
int map[maxn][maxn], dist[maxn];
bool visit[maxn];
int N,P,C;
void init() //初始化
{
int i, j;
for(i = 0; i < maxn; i++)
{
for(j = 0; j < maxn; j++)
{
if(i == j)
map[i][j] = 0;
else
map[i][j] = map[j][i] = INF;
}
}
}
void input() //输入函数
{
int vi, vj, cost;
while(P--)
{
scanf("%d %d %d", &vi, &vj, &cost);
if(cost < map[vi][vj])
map[vi][vj] = map[vj][vi] = cost;
}
}
void floyd() //Floyd算法
{
int i, j, k;
for(k = 0; k <=N; k++) //k为中间点
for(i = 0; i <= N; i++)
for(j = 0; j <= N; j++)
if(map[i][k] + map[k][j] < map[i][j])
map[i][j] = map[i][k] + map[k][j];
}
int main()
{
// freopen("in.txt","r",stdin);
while(cin>>N>>P>>C)
{
init();
input();
floyd();
int sum = 0;
for(int i=0; i<C; ++i)
{
int v;cin>>v;
sum+=map[0][v];
}
printf("%d\n", sum);
}
return 0;
}
查看原帖
点赞 5
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客2025仙途报告 #
16246次浏览 276人参与
# 元旦假期你打算怎么过 #
1377次浏览 46人参与
# 找工作,行业重要还是岗位重要? #
87821次浏览 1759人参与
# 实习没人带,苟住还是跑路? #
646次浏览 21人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105207次浏览 1647人参与
# 我们是不是被“优绩主义”绑架了? #
2523次浏览 103人参与
# 今年你最想重开的一场面试是? #
14274次浏览 153人参与
# 没有家庭托举的我是怎么找工作的 #
32039次浏览 263人参与
# 礼物开箱Plog #
3473次浏览 105人参与
# 秋招落幕,你是He or Be #
23602次浏览 399人参与
# 一人说一个提前实习的好处 #
25285次浏览 326人参与
# 你面试体验感最差/最好的公司 #
30546次浏览 505人参与
# 机械人晒出你的简历 #
148619次浏览 886人参与
# 你有哪些缓解焦虑的方法? #
44677次浏览 868人参与
# 工作中听到最受打击的一句话 #
13868次浏览 185人参与
# 实习要如何选择和准备? #
130500次浏览 1514人参与
# 设计人的面试记录 #
176948次浏览 1575人参与
# 上班后和你想的一样吗? #
95264次浏览 701人参与
# 牛油的搬砖plog #
163987次浏览 1154人参与
# 双非本科的出路是什么? #
189600次浏览 1500人参与