关注
第三题,简单的最短路,看下数据不大,用的简单的 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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 生物制药/化工校招攻略 #
72804次浏览 338人参与
# 拿到offer之后,可以做些什么 #
83978次浏览 437人参与
# MiniMax求职进展汇总 #
997次浏览 23人参与
# 哪些公司在招寒假实习? #
20560次浏览 266人参与
# 你觉得面试是靠实力还是靠运气 #
27045次浏览 295人参与
# 怎么防止在试用期被辞退 #
153652次浏览 959人参与
# TCL求职进展汇总 #
139701次浏览 658人参与
# 牛客十周岁生日快乐 #
203745次浏览 1912人参与
# 卷__卷不过你们,只能卷__了 #
14289次浏览 322人参与
# 硬件/芯片公司工作体验 #
142047次浏览 940人参与
# 26年哪些行业会变好/更差 #
21620次浏览 314人参与
# 秋招遇到的奇葩面试题 #
103099次浏览 422人参与
# 写论文的崩溃时刻 #
7850次浏览 168人参与
# 国企vs私企,你更想去? #
306423次浏览 2496人参与
# 去年的flag与今年的小目标 #
11702次浏览 225人参与
# 关于春招你都做了哪些准备? #
122377次浏览 709人参与
# 腾讯音乐求职进展汇总 #
148416次浏览 1056人参与
# 你不能接受的企业文化有哪些 #
14712次浏览 194人参与
# 入职第一天 #
11929次浏览 251人参与
# 交通银行工作体验 #
23112次浏览 72人参与
# 招聘要求与实际实习内容不符怎么办 #
149492次浏览 889人参与
查看4道真题和解析