POJ3114 有些图缩点/改图/最短路
没想到手感还在~ 不须要又一次建图。仅仅要依据条件改改权值就可以。
还跑k次SPFA~
#include<cstdio>
#include<iostream>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
const int MAXN=600; const int MAXE=500*500*2+100;
int e[MAXE][3];int head[MAXN];int nume;
int n,m,k;
void adde(int i,int j,int w)
{
e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;
e[nume++][2]=w;
}
int dfn[MAXN];int low[MAXN];int ins[MAXN];stack<int>sta;
int times;int scc[MAXN];int block;int vis[MAXN];
void tarjan(int u)
{
dfn[u]=low[u]=times++;
ins[u]=1;
sta.push(u);
for(int j=head[u];j!=-1;j=e[j][1])
{
int v=e[j][0];
if(!vis[v])
{
vis[v]=1;
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(ins[v])
{
low[u]=min(low[u],dfn[v]);
}
}
if(dfn[u]==low[u])
{
int cur;
block++;
do
{
cur=sta.top();
sta.pop();
ins[cur]=0;
scc[cur]=block;
}while(cur!=u);
}
}
void rebuild()
{
for(int i=1;i<=n;i++)
for(int j=head[i];j!=-1;j=e[j][1])
{
int to=e[j][0];
if(scc[i]==scc[to])
{
e[j][2]=0;
}
}
}
int d[MAXN];int inq[MAXN];
const int inf=0x3f3f3f3f;
int spfa(int s,int t)
{
for(int i=1;i<=n;i++)
{
d[i]=inf;
inq[i]=0;
}
d[s]=0;
queue<int>q;
q.push(s);
inq[s]=1;
while(!q.empty())
{
int cur=q.front();
q.pop();
inq[cur]=0;
for(int j=head[cur];j!=-1;j=e[j][1])
{
int to=e[j][0];
if(d[to]>d[cur]+e[j][2])
{
d[to]=d[cur]+e[j][2];
if(!inq[to])
{
inq[to]=1;
q.push(to);
}
}
}
}
return d[t];
} void init()
{
for(int i=0;i<MAXN-2;i++)
{
vis[i]=dfn[i]=low[i]=ins[i]=0;
head[i]=-1;
}
block=nume=times=0;
}
int main()
{
while(~scanf("%d%d",&n,&m)&&n)
{
init();
for(int i=0;i<m;i++)
{
int aa,bb,cc;
scanf("%d%d%d",&aa,&bb,&cc);
adde(aa,bb,cc);
}
scanf("%d",&k);
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i]=1;
tarjan(i);
}
}
rebuild();
int ss,tt;
for(int i=0;i<k;i++)
{
scanf("%d%d",&ss,&tt);
int ans=spfa(ss,tt);
if(ans!=inf)
printf("%d\n",ans);
else
printf("Nao e possivel entregar a carta\n");
}
printf("\n");
}
return 0;
}
POJ3114 有些图缩点/改图/最短路的更多相关文章
- POJ 3592--Instantaneous Transference【SCC缩点新建图 && SPFA求最长路 && 经典】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6177 Accep ...
- HDU 1045 Fire Net(行列匹配变形+缩点建图)
题意:n*n的棋盘上放置房子.同一方同一列不能有两个,除非他们之间被墙隔开,这种话. 把原始图分别按行和列缩点 建图:横竖分区.先看每一列.同一列相连的空地同一时候看成一个点,显然这种区域不可以同一时 ...
- KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...
- PS-前端切图教程(切jpg图和切png图)
微微一运功,把家底都抖出来了. 不过,作为一个设计出身的前端来说,摸ps就和摸键盘一样了 所以可能教程中还是有没用过ps的人看不懂的地方, 欢迎加群讨论:613512106... ---------- ...
- Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图
Tableau绘制漏斗图.甘特图.瀑布图.镶边面积图.阴影坡度图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 漏斗图 数据源 1.1 分色直条漏斗图 (1) ...
- matlab 将多个盒图放在一张图上
1.boxplot 将多个盒图放在一张图上 x1 = normrnd(5,1,100,1)';x2 = normrnd(6,1,200,1)';X = [x1 x2];G = [zeros(size( ...
- iOS启动图和开屏广告图,类似网易
iOS启动图和开屏广告图,类似网易 启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该广告图可以跳转到广告图对应的页面.今天呢,和大家分享一下如何添 ...
- Shader中贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图
原文过于冗余,精读后做了部分简化与测试实践,原文地址:http://www.j2megame.com/html/xwzx/ty/2571.html http://www.cnblogs.com/z ...
- 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法
如果你能使用计算机规范画出以下几种图,那么恭喜你,你在我这里被封为学霸了,我膜拜ing-- 我作为前端开发与产品经理打交道已有5-6年时间,产品经理画的业务流程图我看过很多.于是百度搜+凭以往经验脑补 ...
随机推荐
- luogu2473 [SCOI2008]奖励关
题解参照这里 每个研究完记得乘一个1/n,这是乘了概率. #include <iostream> #include <cstdio> using namespace std; ...
- angularjs报错问题记录
1.[$injector:unpr]:没有找到注入的东西 2.$compile:multidir:多指令编译错误. 3.[ng:areq]:重复定义了ng-controller. 4 ...
- python - 自动化测试框架 - logger
# -*- coding:utf-8 -*- '''@project: Voctest@author: Jimmy@file: log.py@ide: PyCharm Community Editio ...
- python学习-- class 类中需要注意的地方
from django.db import models class Person(models.Model): name = models.CharField(max_length=30) ...
- foreach 、 for 换成 ForEach
List<tBaseRolerMapPower> list =new List<tBaseRolerMapPower>() string strName = string.E ...
- 精通CSS高级Web标准解决方案(2-2 可视化格式模型之定位概述)
视觉格式化模型 块级元素(块框).行内元素(行内框),可以使用display改变生成的框的类型,display:block让行内元素(比如<a>)表现的跟块级元素一样,display:no ...
- [Android Studio篇][1] AS开发中遇到问题汇总
1 在android新建文件,提示权限不够,增加权限 修改工程下 main/AndroidMainfest.xml增加 <uses-permission android:name="a ...
- Python3网络爬虫(三):urllib.error异常
运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载请注明作者和出处:http://blog.csdn.net/c406495762/article ...
- iOS学习笔记47-Swift(七)泛型
一.Swift泛型介绍 泛型是为Swift编程灵活性的一种语法,在函数.枚举.结构体.类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可 ...
- ajax对象的获取及其常用属性
ajax对象的获取及其常用属性 (1)什么是ajax asynchronous javascript and xml(异步的javascript和xml). 是一种用来改善用户体验的技术,其实质是利用 ...