2014 UESTC Training for Graph Theory K
2014-06-15 00:32
344 查看
如果原图直接联通那么就是一个简单的最小生成树问题,
那么就可以构造特殊点生成最小生成树跑一边kruskal得到答案就可以
注意并查集的应用,特殊点为0.首先合并所有特殊点
然后跑kruskal就可以了
那么就可以构造特殊点生成最小生成树跑一边kruskal得到答案就可以
注意并查集的应用,特殊点为0.首先合并所有特殊点
然后跑kruskal就可以了
#include <map> #include <set> #include <list> #include <cmath> #include<cctype> #include <ctime> #include <deque> #include <stack> #include <queue> #include <cstdio> #include <string> #include <vector> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define PI 3.1415926535897932626 using namespace std; int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b); } #define MAXN 1005 int p[MAXN]; int N,M,K; int find(int x){return x==p[x]?x:p[x]=find(p[x]);} struct node { int s,e; int value; friend bool operator < (const node &a,const node &b) { return a.value<b.value; } }src[500000]; void init() { for (int i=0;i<=N;i++) p[i]=i; for (int i=0;i<K;i++) { int a; scanf("%d",&a); int r1=find(0);int r2=find(a); if (r1!=r2) p[r1]=r2; } for (int i=0;i<M;i++) scanf("%d%d%d",&src[i].s,&src[i].e,&src[i].value); sort(src,src+M); } LL kruskal() { LL ans=0; for (int i=0;i<M;i++) { int r1=find(src[i].s),r2=find(src[i].e); if (r1!=r2) { p[r1]=r2; ans+=src[i].value; } } return ans; } int main() { //freopen("sample.txt","r",stdin); while (scanf("%d%d%d",&N,&M,&K)!=EOF) { init(); printf("%lld\n",kruskal()); } return 0; }
相关文章推荐
- 2014 UESTC Training for Graph Theory Problem H 方老师的分身 II
- 2014 UESTC Training for Graph Theory Problem G 方老师分身 I
- 2014 UESTC Training for Graph Theory Problem I 方老师的分身 III
- 2014 UESTC Training for Graph Theory B
- 2014 UESTC Training for Graph Theory Problem F 握手
- 2014 UESTC Training for Graph Theory C
- 2014 UESTC Training for Graph Theory Problem K WHITE ALBUM
- 2014 UESTC Training for Graph Theory F
- 2014 UESTC Training for Graph Theory G
- 2014 UESTC Training for Graph Theory H
- 2014 UESTC Training for Graph Theory I
- 2014 UESTC Training for Graph Theory J
- 2014 UESTC Training for Graph Theory L
- 2017 UESTC Training for Graph Theory
- UESTC Training for Graph Theory——K、Blinking Stalkers
- UESTC Training for Graph Theory——L、House Man
- UESTC Training for Graph Theory——M、Network
- UESTC Training for Graph Theory——N、滑雪与时间胶囊(Large Input)
- UESTC_秋实大哥与连锁快餐店 2015 UESTC Training for Graph Theory<Problem A>
- 2016 UESTC Training for Graph Theory