LOJ10067 构造完全图

我怕爱的太早我们不能终老 提交于 2019-12-01 06:58:04

题目描述

对于完全图 ,若有且仅有一棵最小生成树为 ,则称完全图  是树  扩展出的。

给你一棵树 ,找出  能扩展出的边权和最小的完全图 

输入格式

第一行  表示树  的点数;

接下来  行三个整数 ;描述一条边()权值为 

保证输入数据构成一棵树。

输出格式

输出仅一个数,表示最小的完全图  的边权和。

样例

样例输入

4  
1 2 1  
1 3 1  
1 4 2  

样例输出

12

 

 

输入文件(tree1.in) 

10
5 10 1
5 4 4
4 9 6
2 9 6
8 4 6
1 5 2
3 10 9
5 7 7
6 9 3

答案文件(tree1.out) 

319

 

WA 10分

#include <bits/stdc++.h>
using namespace std;
const int N = 10000 + 5;
struct T {
    int p, d;
};
bool cmp(T x, T y) { return x.d < y.d; }
int vis[N];
T t[N];
int main() {
    int n, ans = 0;
    cin >> n;
    for (int i = 1; i < n; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        ans += z;
        t[y].p = x;
        t[y].d = z;
    }
    sort(t + 1, t + n + 1, cmp);
    for (int i = 1; i <= n; i++) {
        vis[i] = 1;
        for (int j = 1; j <= n; j++) {
            if ((!vis[j]) && (t[j].p != i))
                ans += t[j].d + 1;
        }
    }
    cout << ans;
    return 0;
}

WA 10分

#include <bits/stdc++.h>
using namespace std;
const int N = 10000 + 5;
struct T {
    int id, p, d;  // id
};
bool cmp(T x, T y) { return x.d < y.d; }
int vis[N], e[N][N], n;
T t[N];
void dfs(int x) {  // pre prim
    vis[x] = 1;
    for (int i = 1; i <= n; i++) {
        if ((!vis[i]) && (e[x][i])) {
            t[i].p = x;
            t[i].d = e[x][i];
            t[i].id = i;
            dfs(i);
        }
    }
}
int main() {
    int ans = 0;
    cin >> n;
    for (int i = 1; i < n; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        ans += z;
        e[x][y] = e[y][x] = z;
    }
    dfs(1);
    t[1].id = 1;
    sort(t + 1, t + n + 1, cmp);
    memset(vis, 0, sizeof(vis));
    for (int i = 1; i <= n; i++) {
        vis[t[i].id] = 1;  // vis[i]
        for (int j = 1; j <= n; j++) {
            if ((!vis[t[j].id]) && (t[j].p != t[i].id))
                ans += t[j].d + 1;  // vis[j] t[j].p!=i
        }
    }
    cout << ans;
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!