关于2019年ccf第五题317号子任务

第一次接触图论算法写出来这一题以后可以通过测试样例,但是提交以后总是提示错误,先挂着。。。不知道什么时候找出bug

(最后return前的system(“pause”) 是用来在vs里面调试用的)

希望大佬也能帮忙看下错误噢(今天刚刚申请的博客)

 1 #include<iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 #define inf 1001
 5 int a[10000][10000];//矩阵
 6 bool kind[10000];//记录节点类型
 7 int sort_array[10000];
 8 int main()
 9 {
10     int n, m, k;
11     cin >> n >> m >> k;
12     for (int i = 0; i < n; i++)
13         cin >> kind[i];
14     for (int i = 0; i < n; i++)
15         for (int j = 0; j < n; j++)
16             if (i == j)
17                 a[i][j] = 0;
18             else
19                 a[i][j] = inf;
20
21     //创建图
22     for (int i = 0; i < m; i++)
23     {
24         int p, q, r;
25         cin >> p >> q >> r;
26         a[p - 1][q - 1] = r;
27         a[q - 1][p - 1] = r;
28     }//为每一条邻边赋权值
29
30     //floyd算法计算每两点之间的最短距离
31     for (int k = 0; k < n; k++)
32         for (int i = 0; i < n; i++)
33             for (int j = 0; j < n; j++)
34             {
35                 if (a[i][k] + a[k][j] < 2003 && a[i][k] + a[k][j] < a[i][j])
36                     a[i][j] = a[i][k] + a[k][j];
37             }
38
39     for (int i = 0; i < n; i++)//总共需要m轮次的循环
40     {
41         int pointer = 0;//写入sort_array的指针
42         for (int j = 0; j < 10000; j++)
43         {
44             sort_array[j] = inf;
45         }//先全部初始化为最大值
46         for (int j = 0; j < n; j++)
47         {
48             if (kind[j])
49             {
50                 sort_array[pointer] = a[i][j];
51                 pointer++;
52             }
53         }//此时已经将能到达的有效节点最短距离写入sort_array
54
55         //利用sort函数对sort_array进行升序排序
56         sort(sort_array, sort_array + pointer);
57         int sum = 0;
58         for (int p = 0; p < k; p++)
59         {
60             if (sort_array[p] <= 1000)
61                 sum += sort_array[p];
62         }
63         cout << sum << endl;
64     }
65     system("pause");
66     return 0;
67 }

原文地址:https://www.cnblogs.com/cs-yxk/p/11488413.html

时间: 2024-11-09 03:36:48

关于2019年ccf第五题317号子任务的相关文章

第16次CCF CSP认证-第5题-317 号子任务(subtask317)-图论最短路径

[题目背景]“你在平原上走着走着,突然迎面遇到一堵墙,这墙向上无限高,向下无限深,向左无限远,向右无限远,这墙是什么?”——<流浪地球>原著我们带着地球去流浪了,为了处理流浪过程中可能会发生的危机,联合政府找到你,希望你能协助完成 317 号子任务:制定应急预案.[题目描述]地球的表面有 n 个据点,这些据点之间存在 m 条双向道路.这些据点中,有的是建立在行星发动机之下,受到行星发动机的保护(行星发动机据点),而其他据点则没有行星发动机的保护(普通据点,比如燃料采集据点/科研据点等).当发生

经典算法题每日演练——第二十五题 块状链表

原文:经典算法题每日演练--第二十五题 块状链表 在数据结构的世界里,我们会认识各种各样的数据结构,每一种数据结构都能解决相应领域的问题,每一种数据结构都像 是降龙十八掌中的某一掌,掌掌毙命... 当然每个数据结构,有他的优点,必然就有它的缺点,那么如何创造一种数据结构 来将某两种数据结构进行扬长避短,那就非常完美了.这样的数据结构也有很多,比如:双端队列,还有就是今天讲的 块状链表, 我们都知道 数组 具有 O(1)的查询时间,O(N)的删除,O(N)的插入... 链表 具有 O(N)的查询时

code第一部分数组:第十五题 矩阵翻转(图像翻转)

code第一部分数组:第十五题 矩阵翻转(图像翻转) 首先想到,纯模拟,从外到内一圈一圈的转,但这个方法太慢.如下图,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次. 源代码 #include <iostream> #include <vector> using namespace std; //引用类型形参 void swap(int &n,int &m) { int temp=n; n=m; m=temp; } //指针类型形参 void swap1(int

C语言考试(前五题)

学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是14:10~5:00,上机,不过每天下午有将近三个小时的上机时间.时间那么紧迫还要考试,今天上午得知考试题是从以下十道题中出,轻松了很多.题如下: 1.计算 ,并输出其结果. 2.求出n个学生一门课程中的最高成绩.最低成绩及高于平均成绩的人数. 3.有10个100内的整数,使用选择排序法从大到小排序.

C和指针第七章第五题

实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式. /************************************************************************* > File Name: permutation.c > Created Time: 2014年06月17日 星期二 23时22分34秒 *********************************************************************

Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A

第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id. 给定一个List 如下: List list = new ArrayList(); list.add(new Account(10.00, “1234”)); list.add(new Account(15.00, “5678”)); list.add(ne

第五题

一.通过ODBC DSN建立连接 运用ODBC数据源,首先必须在控制面板的ODBC中设置数据源,然后再编写脚本和数据库源建立连接. 1.创建 ODBC DSN     通过在 Windows 的"开始"菜单打开"控制面板",您可以创建基于 DSN 的文件.双击"ODBC"图标,然后选择"系统 DSN"属性页,单击"添加",选择数据库驱动程序,然后单击"下一步".按照后面的指示配置适用于您

rhcsa考证试题分析(一天更新五题)

rhsca考试时间:2.5小时  满分300分210分及格 当时我考的是300分(虽然很简单但是我还是高兴) 第一题 破解redhat7 密码 按e 输入 rd.break 再接着 ctrl + x mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot 第二题 查看主机名 修改主机名. 第三题 修改网卡配置文件 第四题 配置yum仓库 第五题 配置selinux

萌萌哒的第五题

1100 - 萌萌哒的第五题 Time Limit:10s Memory Limit:128MByte Submissions:353Solved:76 DESCRIPTION 给出一个长度为m的字符串,请问有多少个长度为n的字符串不存在子串等于给出的字符串.为了简化问题,我们规定所有字符串只包含小写英文字母.输入数据: 包含多组输入数据(<=15),每组数据: 第一行包含两个整数n和m(1 <= n,m <= 1000) 第二行包含一个长度为m的字符串,只含有小写字母. INPUT 包