BZOJ1083: [SCOI2005]繁忙的都市
【传送门: BZOJ1083 】 简要题意: 一个有n个点,m条无向边的图,每条无向边都有花费,请求出最少的边使得图变成连通图,并且使得这些边中的最大花费最小,并求出最大花费 题解: 最小生成树 作为一个连通图,想都不用想第一个输出就是n-1(这个有点弱智。。) 然后直接最小生成树,然后记录最大边的花费就可以了 参考代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; struct node { int x,y,d,next; }a[21000];int len,last[310]; void ins(int x,int y,int d) { len++; a[len].x=x;a[len].y=y;a[len].d=d; a[len].next=last[x];last[x]=len; } bool cmp(node n1,node n2) { return n1.d<n2.d; } int fa[310]; int findfa(int x) { if(x!=fa[x]) fa[x]=findfa(fa[x]); return fa[x]; } int main() { int n,m;