UVa11710 - Expensive subway(最小生成树)

简介: UVa11710 - Expensive subway(最小生成树)
#include <cstdio>#include <cstring>#include <string>#include <map>#include <vector>#include <algorithm>usingnamespacestd;
constintN=405;
constintINF=0x7f7f7f7f;
structEdge{
intfrom, to, c;
};
vector<int>adjList[N];
vector<Edge>edges;
map<string, int>m;
ints, c;
intstart;
intd[N];
boolvis[N];
boolinput();
voidsolve();
voidaddEdge(intu, intv, intcost);
intmain()
{
#ifndef ONLINE_JUDGEfreopen("d:\\OJ\\uva_in.txt", "r", stdin);
#endifwhile (input()) {
solve();
    }
return0;
}
boolinput()
{
scanf("%d%d", &s, &c);
if (s==0&&c==0) returnfalse;
m.clear();
for (inti=0; i<N; i++) adjList[i].clear();
edges.clear();
for (inti=0; i<s; i++) {
charbuf[N];
scanf("%s", buf);
strings1=buf;
intsize=m.size();
m[s1] =size;
    }
for (inti=0; i<c; i++) {
charbuf1[N], buf2[N];
intprice;
scanf("%s%s%d", buf1, buf2, &price);
strings1=buf1, s2=buf2;
intu=m[s1], v=m[s2];
addEdge(u, v, price);
    }
charbuf[N];
scanf("%s", buf);
strings1=buf;
start=m[s1];
returntrue;
}
voidaddEdge(intu, intv, intcost)
{
edges.push_back((Edge){u, v, cost});
edges.push_back((Edge){v, u, cost});
adjList[u].push_back(edges.size() -2);
adjList[v].push_back(edges.size() -1);
}
voidsolve()
{
memset(vis, false, sizeof(vis));
memset(d, 0x7f, sizeof(d));
d[start] =0;
vis[start] =true;
for (size_ti=0; i<adjList[start].size(); i++) {
Edgeedge=edges[adjList[start][i]];
intu=edge.to;
intc=edge.c;
d[u] =c;
    }
boolok;
intans=0;
for (inti=0; i<s-1; i++) {
intMin=INF;
intcur;
ok=true;
for (intj=0; j<s; j++) {
if (!vis[j] &&d[j] !=INF) {
if (d[j] <Min) {
Min=d[j];
cur=j;
                }
            }
        }
if (Min==INF) {
ok=false;
break;
        }
vis[cur] =true;
ans+=Min;
for (size_tj=0; j<adjList[cur].size(); j++) {
Edgeedge=edges[adjList[cur][j]];
intv=edge.to;
intcost=edge.c;
if (!vis[v]) {
if (cost<d[v]) {
d[v] =cost;
                }
            }
        }
    }
if (!ok) {
printf("Impossible\n");
    } else {
printf("%d\n", ans);
    }
}
目录
相关文章
|
机器学习/深度学习 开发框架 .NET
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
3975 0
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
|
12月前
|
存储 SQL 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
存储 Linux Windows
操作系统中的内存管理:从原理到实践
内存管理是操作系统中的核心功能,它直接影响着系统的性能和稳定性。本文将深入探讨内存管理的基本原理、关键技术以及实际应用,帮助读者更好地理解内存管理在操作系统中的重要性。
|
10月前
|
自然语言处理 搜索推荐 前端开发
语镜VocaMirror——基于sensevoice、cosyvoice和qwen模型实现与“自身声音”对话
语镜 VocaMirror 是一个创新的对话系统,灵感来源于汤姆猫游戏和亲人语音克隆项目,旨在让用户与自己的声音进行对话。系统融合了语音识别、自然语言处理及个性化语音合成技术,提供趣味互动、心理治疗辅助及多功能扩展等应用。用户可通过 Gradio 界面轻松使用,实现语音转文本、对话生成及个性化语音回复等功能。
760 4
语镜VocaMirror——基于sensevoice、cosyvoice和qwen模型实现与“自身声音”对话
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
227 2
Python实用记录(三):通过netron可视化模型
|
机器学习/深度学习 自然语言处理 算法
ICML 2024 Oral:DPO是否比PPO更适合LLM,清华吴翼团队最新揭秘
【8月更文挑战第13天】在自然语言处理领域,大型语言模型的对齐日益重要。直接偏好优化(DPO)作为无需奖励模型的新方法,虽在学术界受关注,但在实践中,如ChatGPT等应用仍青睐近端策略优化(PPO)。清华大学吴翼团队通过理论分析与实证研究发现DPO潜在局限性,并揭示PPO在LLM微调中取得优异性能的关键因素,如优势归一化、大批量大小及指数移动平均更新等。实验表明,PPO在多个任务中超越DPO,特别是在代码生成任务中取得领先成果。然而,这些发现需更多研究验证。论文详情见: https://arxiv.org/pdf/2404.10719
401 60
|
前端开发 JavaScript 算法
react学习(1)
react学习(1)
173 66
|
11月前
|
JavaScript Java API
深入浅出后端开发:从基础到进阶
本文将带你走进后端开发的神秘世界,从最基础的概念讲起,逐步深入到高级技术的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和实用的技巧,帮助你在后端开发的道路上更进一步。我们将涵盖后端开发的基本概念、常用技术栈、数据库管理、API设计以及性能优化等关键领域,让你全面了解后端开发的方方面面。
|
前端开发 JavaScript 安全
【前端开发新境界】React TypeScript融合之路:从零起步构建类型安全的React应用,全面提升代码质量和开发效率的实战指南!
【8月更文挑战第31天】《React TypeScript融合之路:类型安全的React应用开发》是一篇详细教程,介绍如何结合TypeScript提升React应用的可读性和健壮性。从环境搭建、基础语法到类型化组件、状态管理及Hooks使用,逐步展示TypeScript在复杂前端项目中的优势。适合各水平开发者学习,助力构建高质量应用。
262 0
|
JavaScript Java 测试技术
基于微信小程序的宠物寄养平台的+ssm+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的宠物寄养平台的+ssm+vue.js附带文章和源代码设计说明文档ppt
174 2