关闭

codeforces-368 B. Bakery

146人阅读 评论(0) 收藏 举报
分类:

题意:n,m,k三个值

    n个城市 m条道 k个可以选择的存储仓。

            输出一个最少的钱数可以建立的存储仓和其他城市的联系

思路:

    建立a.b数组 C存储长度。这个代码挺巧妙。直接往编号里存东西。如果K可以到a[i] b[i]中的一点,那么查询值并且修改

#include<bits/stdc++.h>

using namespace std;
const int maxn = 1e5+6;
int n,m,k;
int a[maxn],b[maxn],c[maxn],vis[maxn];
int main()
{
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=m;i++)
        scanf("%d%d%d",&a[i],&b[i],&c[i]);
    for(int i=1;i<=k;i++)
    {
        int x;
        scanf("%d",&x);
        vis[x]=1;
    }
    int ans1=1e9+7;
    for(int i=1;i<=m;i++)
    {
        if(vis[a[i]]+vis[b[i]]==1)
            ans1=min(ans1,c[i]);
    }
    if(ans1==1e9+7)printf("-1\n");
    else printf("%d\n",ans1);

}



题外话:

这篇代码找到的时候发现人家也是大二、大一切了1000多道题。暑期训练也是认认真真。不仅智商低。。而且不努力。好好学习T-T

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:59427次
    • 积分:5987
    • 等级:
    • 排名:第4456名
    • 原创:565篇
    • 转载:12篇
    • 译文:0篇
    • 评论:7条
    博客专栏
    openGL

    文章:17篇

    阅读:3272
    acm

    文章:493篇

    阅读:48059
    最新评论