Luogu2164 SHOI2007 交通网络 期望、BFS、拓扑排序
题目还算不难吧
首先我们枚举点$i$,将其他所有点到这个点的最短路求出来
然后我们在这一次建出的最短路$DAG$的反图上进行拓扑排序。假设我们算到了点$j$,点$j$的人流量为$t_j$,点$j$连出去的边到达的点为点集$\{v\}$,那么对于每一个点$u \in \{v\}$,边$(j,u)$的流量就会增加$\frac{t_j}{|\{v\}|}$,$t_u$会加上$\frac{t_j}{|\{v\}|}$
总时间复杂度$O(N^2)$
#include<bits/stdc++.h>
#define ld long double
using namespace std;
inline int read(){
;
char c = getchar();
while(!isdigit(c)) c = getchar();
) + (a << ) + (c ^ ') , c = getchar();
return a;
}
inline int max(int a , int b){
return a > b ? a : b;
}
struct Ed{
int start , end , upEd;
}ans[];
] , ifRail[][];
];
] , minRoute[];
ld peo[][] , To[][];
struct cmp{
bool operator() (const int& a, const int& b ){
return minRoute[a] < minRoute[b];
}
};
int main(){
int N = read() , M = read();
; i <= M ; i++){
int a = read() , b = read();
ans[(i << ) - ].start = a;
ans[(i << ) - ].end = b;
ans[(i << ) - ].upEd = firEd[a];
firEd[a] = (i << ) - ;
ans[i << ].start = b;
ans[i << ].end = a;
ans[i << ].upEd = firEd[b];
firEd[b] = i << ;
ifRail[a][b] = ifRail[b][a] = ;
}
; i <= N ; i++)
; j <= N ; j++) To[i][j] = read();
; i <= N ; i++){
memset(minRoute , 0x3f , sizeof(minRoute));
memset(Times , , sizeof(Times));
minRoute[i] = ;
Times[i] = ;
queue < int > q;
priority_queue < int , vector < int > , cmp > q1;
q.push(i);
while(!q.empty()){
int t = q.front();
q.pop();
;
for(int j = firEd[t] ; j ; j = ans[j].upEd)
){
minRoute[ans[j].end] = minRoute[t] + ;
Times[ans[j].end] = Times[t];
q.push(ans[j].end);
f = ;
}
){
Times[ans[j].end] += Times[t];
f = ;
}
if(!f) q1.push(t);
}
memset(vis , , sizeof(vis));
vis[i] = ;
while(!q1.empty()){
int t = q1.top();
q1.pop();
; j <= N ; j++)
){
ld t1 = (ld)To[i][t] * Times[j] / Times[t];
peo[j][t] += t1;
peo[t][j] += t1;
To[i][j] += t1;
if(!vis[j]){
vis[j] = ;
q1.push(j);
}
}
}
}
; i <= M ; i++)
cout << ) << peo[ans[i << ].start][ans[i << ].end] + 1e- << endl;
;
}
Luogu2164 SHOI2007 交通网络 期望、BFS、拓扑排序的更多相关文章
- [LuoguP2164][SHOI2007]交通网络_拓扑排序_概率期望
交通网络 题目链接:https://www.luogu.org/problemnew/solution/P2164 数据范围:略. 题解: 直接算不好算,我们考虑建反图然后$Toposort$. 这样 ...
- C. Journey bfs 拓扑排序+dp
C. Journey 补今天早训 这个是一个dp,开始我以为是一个图论,然后就写了一个dij和网络流,然后mle了,不过我觉得如果空间开的足够的,应该也是可以过的. 然后看了题解说是一个dp,这个dp ...
- uvaLA4255 Guess BFS+拓扑排序
算法指南白书 思路:“连续和转化成前缀和之差” #include <stdio.h> #include <string.h> #include <iostream> ...
- hihoCoder1343 : Stable Members【BFS拓扑排序】
题目链接:https://hihocoder.com/problemset/problem/1343 #1343 : Stable Members 时间限制:10000ms 单点时限:1000ms 内 ...
- CH 2101 - 可达性统计 - [BFS拓扑排序+bitset状压]
题目链接:传送门 描述 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量.N,M≤30000. 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条 ...
- hihocoder 1174 [BFS /拓扑排序判断是否有环]
hihocoder 1174 [算法]: 计算每一个点的入度值deg[i],这一步需要扫描所有点和边,复杂度O(N+M). 把入度为0的点加入队列Q中,当然有可能存在多个入度为0的点,同时它们之间也不 ...
- Going from u to v or from v to u?_POJ2762强连通+并查集缩点+拓扑排序
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Description I ...
- 【ZOJ - 3780】 Paint the Grid Again (拓扑排序)
Leo has a grid with N × N cells. He wants to paint each cell with a specific color (either black or ...
- [LeetCode] 207. 课程表(拓扑排序,BFS)
题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...
随机推荐
- recovery 强制执行恢复出厂设置(Rescue Party)
有时候我们在系统正常运行的时候,突然跑到recovery里面了,并且停在了如下界面: Can't load Android system. Your data may be corrupt. If ...
- Xamarin入门,开发一个简单的练手APP
之前周末用Xamarin练手做了个简单APP,没有啥逻辑基本就是个界面架子,MVVM的简单使用,还有Binding,Command的简单使用,还有一个稍微复杂点两个界面交互处理(子页面新增后关闭,父页 ...
- 转:SQL Server中服务器角色和数据库角色权限详解
当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角 ...
- 26_ArrayList_HashSet的比较及Hashcode分析
实体类: package com.itcast.day1; public class ReflectPoint { private int x; public int y; public Reflec ...
- Hp电脑开机报错:no boot disk has been detected or the disk has failed
hp主机开机报错no boot disk has been detected or the disk has failed,重启之后没有作用,开机之后仍然是同样界面.考虑是硬盘问题,按ESC+F10 ...
- python scrapy爬取知乎问题和收藏夹下所有答案的内容和图片
上文介绍了爬取知乎问题信息的整个过程,这里介绍下爬取问题下所有答案的内容和图片,大致过程相同,部分核心代码不同. 爬取一个问题的所有内容流程大致如下: 一个问题url 请求url,获取问题下的答案个数 ...
- centos7下安装docker(11容器操作总结)
这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...
- git 常用命令清单
- VCS双机+oracle 11gR2+ASM主机名修改
----------------------------------------------------------------------------VCS修改主机名---------------- ...
- POJ - 2151 (概率dp)
题意:有T个队伍,有M道题,要求每个队至少有一道题,并且有队伍至少过N道题的概率. 这个题解主要讲一下,后面的,至少有一道题解决和至少一道题至N-1道题解决,到底怎么算的,其实,很简单,就是母函数. ...