ZUFE OJ 2145 05机关图

Description

Ink最近得到了一张藏宝图,这张图上共有n个藏宝室,但因为年代久远藏宝图上的路已经模糊不清,于是Ink找到了智慧的Pseudo,Pseudo告诉Ink,这个宝藏中每两个藏宝室之前都有一条通路,每条通路上都有一定数量的机关。现在Ink已经探明了其中n-1条路上的机关数目,这n-1条路不构成任何环路。众所周知Ink是个乐天派,他坚持认为自己探明的这些路构成的无环联通子图中机关总数是唯一且最少的,现在假设他的想法是对的,他想知道整个图中最少共有多少机关?

Input

第一行是一个数字n,表示藏宝室个数(0<n<=100)

第二行至第n行每行3个数u,v,w,表示探明的一条u到v的路,机关数是w.(1<=u,v<=n, 1<=w<=100).

Output

一个数,表示最少总机关数。

Sample Input

4 2 3 2 1 2 1 3 4 3

Sample Output

17

思路:给定最小生成树,求原来的图最少权值之和是多少。那么只要算加上一条边,加上之后必定成环,计算环上权值最大的边,那么加上去的这条边的权值就是环上最大权值+1,否则最少生成树会被破坏。

例如样例,

1---2---3---4 是这样的图。

加上1到3这条边,那么1,2,3成环,权值最大是2,那么1--3的权值就是2+1=3;

算好之后删除1--3这条边。

加上1--4,那么1,2,3,4成环,权值最大是3,那么1--4权值等于3+1=4;

删除1--4这条边。

加上2--4,那么2,3,4成环,权值最大是3,那么2--4权值等于3+1=4;

所有边的权值都算完了,ans=1+2+3+3+4+4=17;

用DFS可以判断哪些节点在环内。

#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;

const int INF = 0x7FFFFFFF;
const int maxn = 105;
int jz[maxn][maxn];
vector<int> ljb[maxn];
int anss, flag;
int cost[maxn];
int ff[maxn];

void dfs(int start,int end,int now,int tot)
{
    int i;
    if (now == end)
    {
        int maxn = -1;
        flag = 1;
        for (i = 0; i < tot - 1; i++)
        {
            if (jz[cost[i]][cost[i + 1]]>maxn) maxn = jz[cost[i]][cost[i + 1]];
        }
        anss = anss + maxn + 1;
        return;
    }
    for (i = 0; i < ljb[now].size(); i++)
    {
        if (ff[ljb[now][i]] == 0)
        {
            ff[ljb[now][i]] = 1;
            cost[tot] = ljb[now][i];
            dfs(start, end, ljb[now][i], tot + 1);
            if (flag) return;
        }
    }
}

int main()
{
    int n, i, j, u, v, c;
    while (~scanf("%d", &n))
    {
        anss = 0;
        for (i = 0; i <= n; i++) for (j = 0; j <= n; j++) jz[i][j] = INF;
        for (i = 0; i <= n; i++) ljb[i].clear();
        for (i = 1; i <= n - 1; i++)
        {
            scanf("%d%d%d", &u, &v, &c);
            jz[u][v] = c;
            jz[v][u] = c;
            anss = anss + c;
            ljb[u].push_back(v);
            ljb[v].push_back(u);
        }

        for (i = 1; i <= n; i++)
        {
            for (j = i + 1; j <= n; j++)
            {
                if (jz[i][j] == INF)
                {
                    memset(ff, 0, sizeof(ff));
                    ff[i] = 1;
                    cost[0] = i; flag = 0;
                    dfs(i, j, i, 1);
                }
            }
        }
        printf("%d\n", anss);
    }
    return 0;
}
时间: 2024-08-11 09:57:36

ZUFE OJ 2145 05机关图的相关文章

ZUFE OJ 2301 GW I (3)

Description GW 是ZUFE的神犇,有一天他想到一种神奇的变换,并且将它命名为GW变换 对于一个数字n,该变换后的值GW(n)为,先令X=n 第一步,如果X为个位数,GW(n)=X,否则执行第二步; 第二步,X的奇数位置的数字之和为a,偶数位置的和为b, X=a*b, 执行第一步; 现在我们有T个询问,对于每个询问输入三个整数数l,r,x 对于每个询问请输出在[l,r]这个闭区间里的数经过该变换后为x的数有多少个 Input 第一行是一个T,表示有T组询问(T<=1000) 接下来T

编程小练习 OJ题 05

重复的电话号码 查找一个文件中重复的电话号码,所有的大小写字母按照手机九宫格映射到数字,其余字符不考虑,将重复的号码还原后升序输出到接口的文件中,号码小于12位. #include <stdlib.h> #include "PhoneBookProcess.h" #include <map> #include <string> #include <fstream> #include <iostream> #include &l

ZUFE OJ 2288 God Wang I

Description God Wang 是ZUFE的神犇,有一天他想到一种神奇的变换,并且将它命名为GodW变换 对于一个数字n,该变换后的值GodW(n)为,先令X=n 第一步,如果X为个位数,GodW(n)=X,否则执行第二步; 第二步,X的奇数位置的数字之和为a,偶数位置的和为b, X=a*b, 执行第一步; 现在我们有T个询问,对于每个询问输入三个整数数l,r,x 对于每个询问请输出在[l,r]这个闭区间里的数经过该变换后为x的数有多少个 Input 第一行是一个T,表示有T组询问(T

ZUFE OJ 2289 God Wang II

Description 这个世界太无聊了,于是God Wang想出了新的运算符号$,对于两个数x,y来说x$y的值等于x和y各个位置上的数字乘积之和,没有的位按0来算 比如说123$321=1*3+2*2+3*1=10,105$51=1*0+0*5+5*1=5.于是God Wang又有了新的问题, 他定义了函数F(L,R)=(((((L$(L+1))$(L+2))$(L+3)....)$R),他想要知道F(L,R)的值,现在请你来告诉他吧. Input 输入第一行为一个正整数T(T<=1000)

iOS.UIKit.05.UIScrollView

一.案例介绍:利用UIScrollView, 避免键盘遮挡控件:图01.图02其实是存在第三个UIButton的,滑动屏幕可以看到,如图06.效果如图01,图02. 图01图02图03图06 二.案例步骤: 1.选择Single View Application新建项目,取名cq.30.ScrollView,如图03. 2.Main.storyboard如图04,图05. 图04图05 3.CQ30ViewController.h #import <UIKit/UIKit.h> @interf

中国新任驻东盟大使黄溪连抵印尼雅加达履新

不过七星灯使用了一次那叫做黑暗拯救的治疗术再次恢复了一半气血但是很快的他们达成了共识先把我清理出去然后在决出胜负对于这个伤害我并不满意刚才凌月还一下子轰掉点气血呢 但就在这时前面有了动静只见一个团队的玩家正在练级徽记很明显赫然是永恒的玩家似乎是一个千人团正在清理月光森林空地上的狼群 不一个小时的时间高强度的杀怪之下我们已经来到了山下身后累累骷髅的白骨而且凌雪也终于升到了级不过她并不急着转正反正现在已经有超过个玩家转正过了就算去转正也不会有太多的好处倒不如安心把任务做完 不久之后飞儿热情飞扬的宣布

暴雪橙色预警18时解除 江苏安徽局地仍有中到大雪

不久之后我们已经来到了那片盆地盆地之中昨天晚上被我刷掉的腐甲骷髅已经全部刷新了出来漫山遍野的一片但是这上十万的伤害数字显然让龙魂和鬼炙得意万分两个叉着腰牛逼哄哄的冲着城上笑道怎么样被吓到了吧嗯T小说整理发布于sDxsw罗宁的声音有些干涩怅惘道谁曾想百年之后今日等待我的却只是一片废墟心爱之人早已化为一扜黄土 On regaining my bedroom I lay down about eight o'clock, in order to get a little sleep, but the

Android 自定义Gallery浏览图片

之前写的<Android ImageSwitcher和Gallery的使用>一文中提到我在教室一下午为实现那个效果找各种资料.期间在网上找了一个个人觉得比较不错的效果,现在贴图上来: 其实这个效果使用的知识点就是图像的获取.创建.缩放.旋转.Matrix类.Canvas类等,另外就是自定义的Gallery控件. 相信大家都期待马上上代码了吧,嘻嘻.(注释比较多,相信大家都能看懂.) main.xml: <?xml version="1.0" encoding=&quo

Excel 中使用sql语句查询

将Excel连接Oracle数据库 Excel选项板中"数据"—"自其他来源"下拉菜单中有有个可以连接其它数据库的选项"来自数据连接向导"和"来自Microsoft query". Oracle数据源的配置 在Excel中,不管实现哪种方式的对那种数据库的访问都需要配置数据源ODBC. 步骤1:打开Microsoft ODBC管理器,点击选项"用户DSN"的"添加"按钮 图 11 步骤2