关注
第三题,简单的最短路,看下数据不大,用的简单的 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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场捅娄子大赛 #
378962次浏览 3857人参与
# 工作中的卑微时刻 #
12897次浏览 81人参与
# 写给毕业5年后的自己 #
14312次浏览 247人参与
# 多益网络工作体验 #
45868次浏览 243人参与
# 你找实习最大的坎坷是什么 #
2328次浏览 37人参与
# 机械人,你拿到几个offer啦 #
35114次浏览 304人参与
# 比亚迪求职进展汇总 #
718973次浏览 3080人参与
# 你的房租占工资的比例是多少? #
32452次浏览 439人参与
# 你的领导最像哪种动物,为什么? #
12287次浏览 99人参与
# 你觉得材料专业有必要实习嘛 #
13006次浏览 59人参与
# 神州信息工作体验 #
10449次浏览 48人参与
# 第一份工作应该选择高薪还是大平台 #
136458次浏览 830人参与
# lastday知无不言 #
53550次浏览 445人参与
# 找实习你看重大厂光环还是业务方向 #
16120次浏览 117人参与
# 机械人,说说你的烦心事 #
66841次浏览 832人参与
# 硬件人秋招的第一个offer #
73320次浏览 1122人参与
# 机械制造2023笔面经 #
117720次浏览 751人参与
# 材料专业就业可以去哪些企业岗位 #
33734次浏览 320人参与
# 小厂实习有必要去吗 #
47555次浏览 269人参与
# OPPO求职进展汇总 #
654353次浏览 5020人参与