hackerrank HourRank 22 Super Mancunian

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<cmath>
#include<set>
#include<stack>
#define ll long long
#define pb push_back
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define cls(name,x) memset(name,x,sizeof(name))
using namespace std;
const int inf=1e9+10;
const ll llinf=1e16+10;
const int maxn=1e5+10;
const int maxm=2e5+10;
const int mod=1e9+7;
const double pi=acos(-1.0);
int n,m;
struct edge
{
    int st,ed,cost;
    bool friend operator <(const edge &a,const edge &b)
    {
        return a.cost<b.cost;
    }
}e[maxm];
int fa[maxn];
int Find(int i)
{
    if(i!=fa[i]) fa[i]=Find(fa[i]);
    return fa[i];
}
int main()
{
    //freopen("in.txt","r",stdin);
    while(~scanf("%d %d",&n,&m))
    {
        for(int i=0;i<m;i++)
            scanf("%d %d %d",&e[i].st,&e[i].ed,&e[i].cost);
        for(int i=1;i<=n;i++)
            fa[i]=i;
        sort(e,e+m);
        ll anscost=0;
        int maxcost=0;
        for(int i=0;i<m;i++)
        {
            int x=Find(e[i].st);
            int y=Find(e[i].ed);
            if(x!=y)
            {
                fa[x]=y;
                anscost+=e[i].cost;
                maxcost=max(maxcost,e[i].cost);
            }
        }
        int cnt=0;
        for(int i=1;i<=n;i++)
            fa[i]=i;
        for(int i=0;i<m;i++)
        {
            int x=Find(e[i].st);
            int y=Find(e[i].ed);
            if(x!=y)
            {
                if(e[i].cost<maxcost)
                    fa[x]=y;
                else
                    cnt++;
            }
        }
        printf("%lld %d\n",anscost-maxcost,cnt);
    }
    return 0;
}
时间: 2024-11-08 00:42:17

hackerrank HourRank 22 Super Mancunian的相关文章

Java中super的几种用法并与this的区别

1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位. 1 class Base { 2 Base() { 3 System.out.println("Base"); 4 } 5 } 6 7 public class Checket extends Base { 8 Checket() { 9 super();//调用父类的构造方法,一定要放在方法的首个语句 10 System.out.println("Checket"); 11 }

【转载】python super的用法

转载地址: http://blog.csdn.net/cxm19830125/article/details/20610533 super的用法是调用继承类的初始化方法,如下面的代码: 1 class A(object): 2 def __init__(self): 3 print 'A __init__' 4 super(A, self).__init__() 5 print 'leave A' 6 7 class C(object): 8 def __init__(self): 9 prin

Java中的 super和this

super关键字 在子类中用于表示父类对象的引用,可以在子类中调用父类中的方法的属性. super语句 --- 子类在继承父类之后,子类的构造方法中会含有一个super语句. 如果没有手动指定super语句,那么默认使用super()调用父类无参的构造: 如果父类只提供了含参构造,那么子类就必须手动提供对应形式的super语句 注意: super语句必须在子类构造方法的首行 super的使用 super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. sup

java中 this() 和super()的作用及用法

原文地址:http://www.cnblogs.com/hasse/p/5023392.html 一.This Java关键字this只能用于方法体中.this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this. 1.this三大作用: this调用属性.调用方法.利用this表示当前对象. 2.this的用法: (1).普通的直接引用 这种就不用讲了,this相当于是指向当前对象本身. (

9.Super详解

super注意点: surper()是调用父类的构造方法,而且必须在构造方法的第一个 super必须只能出现在子类的方法或者构造方法中! super()和this()不能同时调用构造方法! Vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父类对象的引用 前提: this:没有继承也可以使用 super:只有在继承条件下才可以使用 构造方法: this():本类的构造 super():父类的构造! 1 package com.oop.demo05; 2 3 //J

班级派团队项目小计(四)

经过昨天的思考和今天的小实践,做出了文字上传的最最最最最初级版本——1.0,在一个页面的editText中输入文字,点击上传按钮后显示在textView中 源码:(很基础,学到些东西) 1 package com.team101.classlove; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.view.LayoutIn

12 StatusBar

1 package com.szy.status; 2 3 import android.app.IntentService; 4 import android.app.Notification; 5 import android.app.NotificationManager; 6 import android.app.PendingIntent; 7 import android.content.Intent; 8 import android.util.Log; 9 10 /** 11 *

商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

UEditor富文本编辑器:http://ueditor.baidu.com/website/ 相应页面展示: 商品添加: 商品修改: 前台商品展示: 商品表建表语句: 1 create table TEST.GOODS_TABLE 2 ( 3 gid NUMBER not null, 4 gname VARCHAR2(90), 5 gdetails CLOB, 6 gpicture VARCHAR2(100), 7 gprice NUMBER, 8 gleixing NUMBER, 9 gpi

LLDB详解

LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.平时用Xcode运行程序,实际走的都是LLDB.熟练使用LLDB,可以让你debug事半功倍 LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进入暂停状态.让程序进入暂停状态的方式主要有2种: 断点或者watchpoint: 在代码中设置一个断点