关注
第三题,简单的最短路,看下数据不大,用的简单的 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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# uu们,春招你还来吗? #
13592次浏览 91人参与
# 硬件兄弟们 甩出你的华为奖状 #
117240次浏览 699人参与
# 百融云创求职进展汇总 #
248次浏览 0人参与
# 哪一瞬间让你觉得“这班不如不上” #
12594次浏览 161人参与
# 面试紧张时你会有什么表现? #
16007次浏览 131人参与
# 工作前VS工作后,你的心态变化 #
14371次浏览 163人参与
# Offer比较,你最看重什么? #
240772次浏览 1483人参与
# 2025年终总结 #
14057次浏览 223人参与
# 第一份工作能做外包吗? #
87007次浏览 583人参与
# 为了去实习,我赌上了___ #
22500次浏览 208人参与
# 总结:哪家公司最喜欢泡池子 #
155651次浏览 560人参与
# 应届生初入职场,求建议 #
278999次浏览 2838人参与
# 父母对你找工作是助力还是阻力? #
14281次浏览 204人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
12717次浏览 140人参与
# 互联网公司评价 #
459200次浏览 4041人参与
# 一人推荐一个值得做的项目 #
10202次浏览 144人参与
# 十二月请对我好一点 #
26206次浏览 356人参与
# 和牛牛一起刷真题 #
118685次浏览 2085人参与
# 学历or实习经历,哪个更重要 #
202828次浏览 1076人参与
# 毕业论文进行时 #
16964次浏览 112人参与
# 25届网易互娱暑实进度 #
91901次浏览 750人参与
海康威视公司福利 1382人发布