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 ...
随机推荐
- java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类
6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义.例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口 ...
- PHP高端课程
关于目后佐道IT教育 http://www.cnblogs.com/itpua/p/7710917.html 目后佐道IT教育的师资团队 http://www.cnblogs.com/itpua/p/ ...
- C#栈Stack的使用
using System; using System.Collections.Generic; namespace CSharp栈 { class Program { static void Main ...
- flask模板语言
由于Django的模板引擎和Flask中的Jinja2模板引擎有很多一样的地方,所以我将一样的地方总结到了独立的文章中 https://www.cnblogs.com/kuxingseng95/art ...
- Mac OSX用 dd 命令,浇灌ISO镜像到USB驱动器
Mac OSX用 dd 命令,浇灌ISO镜像到USB驱动器 字数244 阅读197 评论0 喜欢0 把ISO镜像转换为一个可启动的USB设备.一种可行的方法是通过OS X的Terminal “浇灌”到 ...
- 组件开发中的Controller View模式
“Controller View”模式: 组件嵌套中,最顶层的组件只管理State 子组件为纯组件 顶层组件分配State给子组件,作为子组件的props 子组件接受顶层组件发来的State作为自身的 ...
- noip_最后一遍_2-图论部分
大体按照 数学 图论 dp 数据结构 这样的顺序 模板集 这个真的只有模板了……………… ·spfa #include<bits/stdc++.h> using namespace std ...
- Bzoj 1088: [SCOI2005]扫雷Mine (DP)
Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\) ...
- MySQL开启日志跟踪
在开发过程中有时候会遇到sql相关的问题,但是有时候代码中不会直接看到真实的sql,想要看到mysql中实际执行的是什么sql,可以通过开启日志跟踪方式查看. 1 开启日志跟踪 SET GLOBAL ...
- Linux基础学习-基本命令
基本命令 date命令 参数 作用 %t 跳格 %H 小时(00-23) %I 小时(00-12) %M 分钟(00-59) %S 秒(00-59) %j 今年中的第几天 [root@qdlinux ...