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; }

浙公网安备 33010602011771号