FOJ Problem 2271 X
Accept: 55 Submit: 200
Time Limit: 1500 mSec Memory Limit : 32768
KB
Problem Description
X is a fully prosperous country, especially known for its complicated
transportation networks. But recently, for the sake of better controlling by the
government, the president Fat Brother thinks it’s time to close some roads in
order to make the transportation system more effective.
Country X has N cities, the cities are connected by some undirected roads and
it’s possible to travel from one city to any other city by these roads. Now the
president Fat Brother wants to know that how many roads can be closed at most
such that the distance between any two cities in country X does not change. Note
that the distance between city A and city B is the minimum total length of the
roads you need to travel from A to B.
Input
The first line of the date is an integer T (1 <= T <= 50), which is the
number of the text cases.
Then T cases follow, each case starts with two numbers N, M (1 <= N <=
100, 1 <= M <= 40000) which describe the number of the cities and the
number of the roads in country X. Each case goes with M lines, each line
consists of three integers x, y, s (1 <= x, y <= N, 1 <= s <= 10, x
is not equal to y), which means that there is a road between city x and city y
and the length of it is s. Note that there may be more than one roads between
two cities.
Output
For each case, output the case number first, then output the number of the
roads that could be closed. This number should be as large as possible.
See the sample input and output for more details.
Sample Input
2 3
1 2 1
1 2 1
1 2 2
3 3
1 2 1
2 3 1
1 3 1
Sample Output
Case 2: 0
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#define INF 0x3f3f3f3f
using namespace std;
const int N_MAX = + ;
int d[N_MAX][N_MAX];
int dp[N_MAX][N_MAX];
int V, M;//顶点数量,边数
void floyd() {
for (int k = ; k < V; k++)
for (int i = ; i < V; i++)
for (int j = ; j < V; j++)
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
int main() {
int T,cs=;
scanf("%d", &T);
while (T--) {
cs++;
scanf("%d%d", &V, &M);
memset(d, 0x3f, sizeof(d));
for (int i = ; i < V; i++) d[i][i] = ;
int res = ;
for (int i = ; i < M; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
a--, b--;
if (d[a][b] == INF) { d[a][b] = c;}
else {//!!一条路有多条边存在
d[a][b] = min(d[a][b], c);
res++; }
d[b][a] = d[a][b];//!!!!!路径双向
} memcpy(dp, d, sizeof(d));
floyd();
for (int i = ; i < V; i++) {
for (int j = i+; j < V; j++) {//!!!!! if (d[i][j] == INF)continue;//两点没有直接连通路,不存在边不需要判断
if (dp[i][j]<d[i][j]) {
res++;
}
else {//相等,也可能i,j之间可以通过i->k->j的路走,这样就可以删掉直接连通路
for (int k = ; k < V; k++) {
if (k == i || k == j)continue;//!!!!!
if (d[i][j] == dp[i][k] + dp[k][j]) {//!!!!!!
res++;
break;
}
}
}
}
}
printf("Case %d: %d\n",cs,res);
}
return ;
}
FOJ Problem 2271 X的更多相关文章
- FOJ ——Problem 1759 Super A^B mod C
Problem 1759 Super A^B mod C Accept: 1368 Submit: 4639Time Limit: 1000 mSec Memory Limit : 32 ...
- 【Floyd最短路】第七届福建省赛 FZU Problem 2271 X
http://acm.fzu.edu.cn/problem.php?pid=2271 [题意] 给定一个n个点和m条边的无向连通图,问最多可以删去多少条边,使得每两个点之间的距离(最短路长度)不变. ...
- FOJ Problem 1016 无归之室
Problem 1016 无归之室 Accept: 926 Submit: 7502Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...
- FOJ Problem 1015 土地划分
Problem 1015 土地划分 Accept: 823 Submit: 1956Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- foj Problem 2107 Hua Rong Dao
Problem 2107 Hua Rong Dao Accept: 503 Submit: 1054Time Limit: 1000 mSec Memory Limit : 32768 K ...
- foj Problem 2282 Wand
Problem 2282 Wand Accept: 432 Submit: 1537Time Limit: 1000 mSec Memory Limit : 262144 KB Prob ...
- FOJ Problem 2273 Triangles
Problem 2273 Triangles Accept: 201 Submit: 661Time Limit: 1000 mSec Memory Limit : 262144 KB P ...
- foj Problem 2275 Game
Problem D Game Accept: 145 Submit: 844Time Limit: 1000 mSec Memory Limit : 262144 KB Problem D ...
- foj Problem 2283 Tic-Tac-Toe
Prob ...
随机推荐
- org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/home/index2", template might not exist or might not be accessible by any of the configured Template Resolvers
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/home/index2", ...
- gendiff - 致力于创建无错的 diff 文件的工具
SYNOPSIS gendiff <directory> <diff-extension> DESCRIPTION gendiff 是一个简单的脚本,目标是根据单一的目录生成一 ...
- Jordan 标准型定理
将学习到什么 就算两个矩阵有相同的特征多项式,它们也有可能不相似,那么如何判断两个矩阵是相似的?答案是它们有一样的 Jordan 标准型. Jordan 标准型定理 这节目的:证明每个复矩阵都与一 ...
- Linux文件系统概述二
VFS-目录项对象(dentry) 每个文件除了有一个索引节点 inode 数据结构外,还有一个目录项 dentry 数据结构 dentry 结构代表的是逻辑意义上的文件,描述的是文件逻辑上的属性,目 ...
- 打印两个有序链表的公共部分 【题目】 给定两个有序链表的头指针head1和head2,打印两个 链表的公共部分
简单题 package my_basic.class_3; public class Code_10_PrintCommonPart { public static class Node{ int v ...
- bootstrap历练实例:复选框或单选按钮作为输入框组的前缀或后缀
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- javase(7)_Objcet类
一.Object源代码 class Object { private static native void registerNatives(); static {registerNatives();} ...
- java在线聊天项目 swt可视化窗口Design 重新设计好友列表窗口 增加菜单栏
增加的菜单栏效果图如下: eclipse 中调整到 swt的design视图下 控件区域选择Menu Controls 将Menu Bar拖动到窗口标题栏 将Cascaded Menu拖动到Menu ...
- tableview 删除cell
正如在以前的帖子说,但是我在转到故事版(StoryBoard)教程之前,我有另外一个问题来回答. 我如何从UITableView删除一行呢? 当人们构建简单的表视图引用程序后,这是另一个常见的问题 ...
- Ubuntu美化
Ubuntu美化 觉得ubuntu18.04的界面太丑了,所以决定美化一下. 整了好长时间特别费事.所以写个随笔记录一下. 安装gnome-tweak-tool和gnome-shell-extensi ...