A - Bakery

  题目:

 

 

 题目网址:Problem - 707B - Codeforces

  思路:

给定n个村庄,有m条路,有k个村庄有面粉

寻找一个面粉村庄到另一个不是面粉的村庄的最短路径

先存储道路再对村庄进行一边搜索寻找最短的;

  代码实现:

#include<stdio.h>
int x[100007],y[100007],z[100007],b[100007]={0},a,k,n,m,ans=-1;
int main()
{
    scanf("%d%d%d\n",&n,&m,&k);
    for (int i=1;i<=m;++i)
        scanf("%d%d%d\n",&x[i],&y[i],&z[i]);//双向存储道路
    for (int i=1;i<=k;++i)
    {
        scanf("%d",&a);
        b[a]=1;//标志面粉厂
    }
    for (int i=1;i<=m;++i)//遍历一遍
        if (b[x[i]]+b[y[i]]==1)//判断两个村庄的一个为面粉,一个不是面粉
            if (ans==-1 || z[i]<ans)
                ans=z[i];//取最大
    printf("%d\n",ans);
    return 0;
}

 

posted @ 2021-07-26 15:40  wateriness  阅读(31)  评论(0)    收藏  举报