关注
第三题,简单的最短路,看下数据不大,用的简单的 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
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
317665次浏览 2920人参与
# 上班苦还是上学苦呢? #
66888次浏览 553人参与
# 阿里云管培生offer #
35476次浏览 420人参与
# 地方国企笔面经互助 #
4272次浏览 12人参与
# 如果有时光机,你最想去到哪个年纪? #
19762次浏览 321人参与
# 选完offer后,你后悔学本专业吗 #
21129次浏览 151人参与
# 百度开奖 #
176937次浏览 1108人参与
# 如何一边实习一边秋招 #
994916次浏览 12653人参与
# 招聘要求与实际实习内容不符怎么办 #
10600次浏览 276人参与
# 学历or实习经历,哪个更重要 #
52951次浏览 414人参与
# 海康威视求职进展汇总 #
400038次浏览 3406人参与
# 正在实习的你,几点下班 #
52808次浏览 394人参与
# 国央企薪资爆料 #
10735次浏览 76人参与
# 租房前辈的忠告 #
109243次浏览 5232人参与
# 软开人,秋招你打算投哪些公司呢 #
43822次浏览 544人参与
# 得物求职进展汇总 #
67076次浏览 686人参与
# 软件开发薪资爆料 #
2184904次浏览 21812人参与
# 米哈游求职进展汇总 #
176702次浏览 1464人参与
# 美的求职进展汇总 #
207006次浏览 1619人参与
# 2023毕业生求职有问必答 #
120926次浏览 1303人参与
# 机械制造秋招总结 #
30488次浏览 354人参与
# 如果不工作真的会快乐吗 #
60229次浏览 528人参与