解题思路:Dijkstra算法(单源最短路径)和0-1背包,但是要考虑重边

#include<stdio.h>
#include<vector>
#include<string.h>
#include<iostream>
using namespace std;
vector < pair<int, int> > G[105];
const int INF = 1000000;
int Dij[105];
int isVisit[105];
int City[105];
int f[1000002];
int S, N, M;
void Init(){
 int i;
 for(i = 0; i <= N; i++){
  G[i].clear();
  Dij[i] = INF;
 }
 memset(isVisit, 0, sizeof(isVisit));
 memset(f, 0, sizeof(f));
}
void Dijkstra(int begin){
 int i, v, weight;
 Dij[begin] = 0;
 while(isVisit[begin] == 0){
  isVisit[begin] = 1;
  for(i = 0; i < G[begin].size(); i++){
   v = G[begin][i].first;
   weight = G[begin][i].second;
   if(Dij[v] > Dij[begin] + weight)
    Dij[v] = Dij[begin] + weight;
  }
  int min_cost = INF;
  for(i = 0; i <= N; i++){
   if(!isVisit[i] && Dij[i] < min_cost){
    min_cost = Dij[i];
    begin = i;
   }
  }
 }
}
int pack(){
 int i, j;
 for(i = 1; i <= N; i++){
  for(j = S; j >= 0; j--){
   if(j >= Dij[i])
    f[j] = f[j] > f[j - Dij[i]] + City[i] ? f[j] : f[j - Dij[i]] + City[i];
  }
 }
 return f[S];
}
int main(){
 int T, i, max_cost;
 scanf("%d", &T);
 while(T--){
  scanf("%d%d%d", &S, &N, &M);
  Init();
  for(i = 0; i < M; i++){
   int x, y, len;
   scanf("%d%d%d", &x, &y, &len);
   G[x].push_back(make_pair(y, len));
   G[y].push_back(make_pair(x, len));
  }
  for(i = 1; i <= N; i++)
  scanf("%d", &City[i]);
  Dijkstra(0);
  max_cost = pack();
  printf("%d\n", max_cost);
 }
 return 0;

}

作业 二十七 三国志相关推荐

  1. 那一年,我们二十七八岁

    我今年二十七八岁, 每天起床的时间从中午12点变成了早上7点,睡觉的时间从凌晨变成了晚上11点. 我今年二十七八岁, 工作中开始接触形形色色的人,见到亲戚朋友,他们不再问你考试考了多少分, 而是问你工 ...

  2. 那年,我们二十七八岁

    今天无意中看到这个视频<那年,我们二十七八岁>,虽然我还没有到这个时候,但是仍然很有感触,我把它的歌词抄下来了... 我今年二十七八岁, 每天起床的时间从中午12点变成了早上7点,睡觉的时 ...

  3. 聊聊二十七八岁,聊二十一二岁

    聊聊二十七八岁,聊二十一二岁 我今年二十七八岁,  每天起床的时间从中午12点变成了早上7点,睡觉的时间从凌晨变成了晚上11点.  我今年二十七八岁,  工作中开始接触形形色色的人,  我今年二十七八 ...

  4. 2021年大数据Hadoop(二十七):YARN运行流程

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn运行流程 本系列历史文章 2021年大数据Hado ...

  5. 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...

    2021福师<计算机应用基础>在线作业二[满分答案]奥鹏作业满分答案 福师<计算机应用基础>在线作业二-0001 试卷总分:100  得分:100 一.单选题 (共 40 道试 ...

  6. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十七:TFT模块 - 显示

    实验二十七:TFT模块 - 显示 所谓TFT(Thin Film Transistor)就是众多LCD当中,其中一种支持颜色的LCD,相较古老的点阵LCD(12864笑),它可谓高级了.黑金的TFT ...

  8. 计算机在线作业office,16春地大《计算机级等级考试Office》在线作业二.doc

    16春地大<计算机级等级考试Office>在线作业二 谋学网 HYPERLINK "" 地大<计算机一级等级考试Offi>在线作业二 一.单选题(共 17 ...

  9. 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...

    福师<计算机应用基础>在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置 (12页) 本资源提供全文预览,点击全文预览即可 ...

最新文章

  1. 手把手教你,Java如何实现二维码?【附源码】
  2. edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统
  3. python函数知识四 迭代器、生成器
  4. 北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?
  5. C语言关键字----Const
  6. grade java_Gradle Java 构建入门
  7. Kali Linux系统设置中文语言环境-1
  8. 文件间调用变量(extern,include)[转]
  9. 从零开始开发标准的s57电子海图第三篇--ECDIS标准(共一百篇)
  10. bim 水利枢纽 运维_BIM技术与现代化建筑运维管理
  11. 雷神云手机亚马逊养号替代软件- VMLogin中文版多账号防关联超级浏览器
  12. TCA9548A IIC多路扩展模块使用
  13. 红帽的RHCSA、RHCE、RHCA值得报考吗?
  14. CE游戏修改器制作游戏修改器傻瓜教程
  15. AMD处理器与INTEL的区别
  16. 访客预约管理4大难点,帮你逐一破解
  17. 如何把一个字符串的大小写取反?(大写转小写/小写转大写)
  18. 2021版!万字UNIX网络编程学习笔记(套接字篇)
  19. 关于DebugView无法打印出KdPrint信息
  20. 小程序好看卡片式轮播

热门文章

  1. django book的实践
  2. 计算机硬件报警声音,主板报警,详细教您电脑主板报警声的含义介绍
  3. 数据仓库维度建模——事实表设计
  4. 自动排课系统的设计与实现 开题报告 java_学校排课系统设计与实现(附源程序)...
  5. 数据仓库DM、DW和ODS等概念区分
  6. SpringBoot系统整理|基础篇|黑马视频
  7. 春节晚报 | 2月6日 星期日 | 短道速滑混合接力中国队夺首金;抖音PC版上架微软应用商店;Meta首次公布元宇宙业绩...
  8. SonarQube 9.x集成阿里p3c代码规范检测java代码;
  9. 大数据Spark学习笔记—未更完
  10. C++单例模式 : 懒汉模式 与 饿汉模式