[usaco3.1.1]agrinet

是一道最小生成树的模板题,顺便学习了一下刘汝佳大大的间接排序和Kruskal算法。

 1 /*
 2 ID:abc31261
 3 LANG:C++
 4 TASK:agrinet
 5 */
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<algorithm>
 9 #include<iostream>
10 using namespace std;
11 const int maxn=11111;
12 int r[maxn],f[maxn],w[maxn],u[maxn],v[maxn];
13
14 int cmp(const int i,const int j){ return w[i]<w[j]; }{间接排序}
15
16 int find(int x)
17 {
18     if (f[x]!=x)f[x]=find(f[x]);
19     return f[x];
20 }
21 int main()
22 {
23     int i,j,l,x,y,n,m=0,ans=0;
24     freopen("agrinet.in","r",stdin);
25     freopen("agrinet.out","w",stdout);
26     scanf("%d",&n);
27     for (i=1;i<=n;i++)
28         for (j=1;j<=n;j++)
29         {
30             scanf("%d",&l);
31             w[++m]=l;
32             u[m]=i;
33             v[m]=j;
34         }
35     for (i=1;i<=m;i++)r[i]=f[i]=i;
36     sort(r+1,r+m+1,cmp);
37     for (i=1;i<=m;i++)
38     {
39         j=r[i]; x=find(u[j]); y=find(v[j]);
40         if (x!=y)
41         {
42            ans+=w[j];
43            f[y]=x;
44         }
45     }
46     printf("%d\n",ans);
47     return 0;
48 }
时间: 2024-09-30 23:28:03

[usaco3.1.1]agrinet的相关文章

POJ 1258 Agri-Net(Prim)

题目网址:http://poj.org/problem?id=1258 题目: Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60004   Accepted: 24855 Description Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet conne

poj1258 Agri-Net (prim+heap)

题目链接:poj1258 Agri-Net 这题我上个月做过,是个大水题,今天看见有人用prim+heap做的,就学习了下. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #include<vector> 6 #include<set> 7 #define CLR(a,b) memset((a),(b),sizeof((

洛谷P1546 最短网络 Agri-Net

P1546 最短网络 Agri-Net 526通过 959提交 题目提供者JOHNKRAM 标签图论贪心USACO 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 50分C++代码,求解 请指教哪里出现了问题,只有… 求解为什么只有40分 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最小的消费,他想铺设最短的光纤去连接所

POJ1258 Agri-Net

Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46319   Accepted: 19052 Description Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He nee

poj 1258 Agri-Net(Prim)(基础)

Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44487   Accepted: 18173 Description Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He nee

USACO agrinet Prim

裸最短生成树 /* ID:kevin_s1 PROG:agrinet LANG:C++ */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #include <cst

usaco-3.1-PROB Shaping Regions-漂浮法

漂浮法,顾名思义,就是一块块的往上飘. 以逆序来进行放置,即n to 1.逆序的好处在于放置一个矩形后,俯视看到的就是最终俯视该矩形应该看到的.因为挡着它的矩形在之前已经放置好了,所以可直接统计,为递归创造了条件.每放一个矩形,可以想象成将其扔入一密度很大的海水底部,海分成了n层,然后矩形开始向上浮.在上浮过程中若碰撞到其他的矩形则断裂成几个小矩形,继续上浮,直到浮出水面.于是想到用个递归来模拟上浮过程. /* ID: rowanha3 LANG: C++ TASK: rect1 */ #inc

最小生成树——最短网络Agri-Net

最短网络Agri-Net [问题描述] 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最小的消费,他想铺设最短的光纤去连接所有的农场.你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案.每两个农场间的距离不会超过100000. [输入格式] 第一行: 农场的个数,N(3<=N<=100). 第二行..结尾 后来的行包含

poj 1258 Agri-Net 解题报告

题目链接:http://poj.org/problem?id=1258 题目意思:给出 n 个 farm,每个farm 之间通过一定数量的fiber 相连,问使得所有farm 直接或间接连通的 最少 fiber 数是多少. 赤裸裸的最小生成树,用prim做的. 有个地方写错,wa 了 几次. 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 const int farm_num = 10000