hdu 4034
比赛时才发现自己基础算法都忘得光光了,逆向floyd
i->j经过k点,只要i到j的距离大于或者等于,就把这边标记,实为去掉。。。此时整个图就减一条边
#include<iostream>
#include<cstdio>
#include<limits.h>
#include<memory.h>
using namespace std;
#define INF INT_MAX
#define maxn 110
int n;
int d[maxn][maxn],m[maxn][maxn];
int vis[maxn][maxn];
void init()
{
memset(d,INF,sizeof(d));
memset(vis,,sizeof(vis));
}
void input()
{
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
{
scanf("%d",&d[i][j]);m[i][j] = d[i][j];
} }
int floyd()//逆向floyd
{
int cnt = ;
for(int k = ; k < n; k++)
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
if(i != k && k != j && d[i][j] >= d[i][k] + d[k][j])
{
vis[i][j] = ;
d[i][j] = d[i][k] + d[k][j];
if(d[i][j] < m[i][j])return -;
}
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
if(vis[i][j]) cnt++;
return n * n - n - cnt;
}
int main()
{
int T;
scanf("%d",&T);
int cas = ;
while(T--)
{
scanf("%d",&n);
init();
input();
printf("Case %d: ",cas++);
int t = floyd();
if(t == -) puts("impossible");
else cout<<t<<endl;
}
}
hdu 4034的更多相关文章
- hdu 4034 Graph
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 题目分类:图论 题意:n个顶点,然后给出从i到j的最短路径长度,求至少需要哪些边 第二组样例 第 ...
- HDU 4034 Graph(Floyd变形——逆向判断)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4034 Problem Description Everyone knows how to calcu ...
- HDU 4034 Graph Floyd最短路
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 题意: 给你一个最短路的表,让你还原整个图,并使得边最少 题解: 这样想..这个表示通过floy ...
- HDU 4034 Graph:反向floyd
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034 题意: 有一个有向图,n个节点.给出两两节点之间的最短路长度,问你原图至少有多少条边. 如果无解 ...
- hdu 4034 2011成都赛区网络赛 逆向floyd **
给出一个最短路邻接矩阵,求出构图的最小边数 正常的floyd的k放在最外面是为了防止i到j的距离被提前确定,而逆向的floyd,i到j的距离已经确定,所以需要在i到j之间枚举k,注意需要break,否 ...
- hdu 4034 Graph (floyd的深入理解)
Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submi ...
- HDU 4034 Graph(floyd,最短路,简单)
题目 一道简单的倒着的floyd. 具体可看代码,代码可简化,你有兴趣可以简化一下,就是把那个Dijsktra所实现的功能放到倒着的floyd里面去. #include<stdio.h> ...
- hdu 4034 Graph floyd
题目链接 给出一个有向图各个点之间的最短距离, 求出这个有向图最少有几条边, 如果无法构成图, 输出impossible. folyd跑一遍, 如果dp[i][j] == dp[i][k]+dp[k] ...
- hdu 4034 Graph(逆向floyd)
floyd的松弛部分是 g[i][j] = min(g[i][j], g[i][k] + g[k][j]);也就是说,g[i][j] <= g[i][k] + g[k][j] (存在i-> ...
随机推荐
- laravel中消息通知功能
以laravel5.5为例子,这个功能laravel自带的有: 1.生成表文件的migration文件,再migrate一下在数据库里生成表.命令为:php artisan notifications ...
- 子页面调整父亲页面的iframe元素
$('iframe', parent.document).attr('scrolling','no');
- xcode 自动签名原理
签名的核心就是provision profile要与当前的bundle id及本地的私钥相匹配. teamid:每个开发者账号都会对应一个teamid.企业的开发这账号除了对应一个teamid外,下面 ...
- Centos7搭建OpenVPN服务器
Windows下同时连接多个VPN的话,需要以管理员身份运行 C:\Program Files\TAP-Windows\bin\addtap.bat 添加虚拟网络适配器 --------------- ...
- cacti监控服务器
1.Cacti基本概念详解 Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户 ...
- SSM商城项目(八)
1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步到索引库 2. 什么是SolrCloud SolrCloud(solr 云 ...
- servlet3.1
Servlet3.1新增的新特性强制更改sessionId 由HttpServletRequest 的changeSessionId()方法实现 非阻塞式IO 非阻塞式IO我们应该知道Servlet底 ...
- swift static func 和 class func
Swift中static func 相当于class final func.禁止这个方法被重写 clas func 可以被继承重写
- [leetcode]70. Climbing Stairs爬楼梯
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- [leetcode]17. Letter Combinations of a Phone Number手机键盘的字母组合
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that th ...