首页 > 其他 > 详细

Bakery - CF707B 【贪心 水题 图论】

时间:2020-05-05 17:41:04      阅读:58      评论:0      收藏:0      [点我收藏+]

题目

CF707B

注意事项

啊啊啊啊啊 注意无向边要建两条边!!!建两条边的话Edge的条数要*2!!!贡献WA和RE OMG

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=100005;
const int INF=0x3f3f3f3f;
int n,m,k;
struct Edge{
	int next,to,w; 
}edge[MAXN<<1];
int head[MAXN];
int supply[MAXN];
bool sup[MAXN];
int cnt;
void add_edge(int u,int v,int w){
	edge[++cnt].to=v;
	edge[cnt].w=w;
	edge[cnt].next=head[u];
	head[u]=cnt;
	edge[++cnt].to=u;
	edge[cnt].w=w;
	edge[cnt].next=head[v];
	head[v]=cnt;
} 
int main(){
	scanf("%d%d%d",&n,&m,&k);
	int u,v,w;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&u,&v,&w); 
		add_edge(u,v,w);
	}
	if(k==0){ 
		printf("-1\n");
		return 0;
	}
	for(int i=1;i<=k;i++){
		scanf("%d",&supply[i]);
		sup[supply[i]]=true; 
	}
	int ans=INF; 
	for(int i=1;i<=k;i++){
		int to;
		for(int j=head[supply[i]];j;j=edge[j].next){
			to=edge[j].to;
			if(sup[to]) continue;
			ans=ans>edge[j].w?edge[j].w:ans;
		}
	}
	if(ans==INF) printf("-1\n");
	else printf("%d\n",ans);
	return 0;
}

Bakery - CF707B 【贪心 水题 图论】

原文:https://www.cnblogs.com/xuwanwei/p/12831535.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!