[FZYZOJ 1094] 路径

P1094 -- 路径

时间限制:1000MS

内存限制:65536KB

Description

给定一张带权有向图,现在你可以从任意点出发,但是要求要找到一条路径(可以走重边),并且这条路径的长度小于-19910917917,问这种路径是否存在?

Input Format

输入数据包括一个N和一个M,表示点数和边数。接下来M行,每行有3个整数A、B、C,表示从A向B连出一条权值为C的边。

Output Format

输出包括一个字符“Y”或“N”,“Y”表示存在,“N”表示不存在。

Sample Input

3 4
1 2 1
2 3 -1
3 1 1
3 1 -1

Sample Output

Y

Hint

对于40%的数据,边数不超过10。 对于100%的数据,点数不超过10000,边数不超过10000,权C绝对值不超过300000。

【题解】

TAT又WA了n多次

我以为STL的队列被卡时间了QAQ后来发现并没有

是我自己搞错了

首先,outqueue的次数设定为10即可。

然后,low一定要开long long!因为10000*-300000要。。。了

TAT我就这样WA了无数次

好歹最后0.028s排到rank2

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAX=10010;
 4 struct node {
 5     int to,w,next;
 6 }edge[MAX];
 7 bool used[MAX];
 8 int outqueue[MAX],head[MAX];
 9 long long low[MAX];
10 int n,m;
11 char B[1<<15],*S=B,*T=B;
12 char getchar2() {
13     return S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?0:*S++;
14 }
15 int read() {
16     int x=0,f=1;
17     char ch=getchar2();
18     while(ch<‘0‘||ch>‘9‘) {if(ch==‘-‘) f=-1; ch=getchar2();}
19     while(ch>=‘0‘&&ch<=‘9‘) {x=(x<<1)+(x<<3)+ch-‘0‘; ch=getchar2();}
20     return x*f;
21 }
22
23 bool spfa() {
24     queue<int> q;
25     used[1]=1;
26     for (int i=1;i<=n;++i) q.push(i);
27     while(!q.empty()) {
28         int top=q.front();
29         q.pop();used[top]=0;
30         outqueue[top]++;
31         if(outqueue[top]>10) return 0;
32         for (int k=head[top];k!=-1;k=edge[k].next)
33             if(low[edge[k].to]>low[top]+edge[k].w) {
34                 low[edge[k].to]=low[top]+edge[k].w;
35                 if(!used[edge[k].to]) {
36                     used[edge[k].to]=1;
37                     q.push(edge[k].to);
38                 }
39             }
40     }
41     return 1;
42 }
43 int main() {
44     memset(used,0,sizeof(used));
45     memset(head,-1,sizeof(head));
46     memset(outqueue,0,sizeof(outqueue));
47     memset(low,0,sizeof(low));
48     n=read();m=read();
49     for (int i=1,k=0,from,to,wei; i<=m; ++i) {
50         from=read();to=read();wei=read();
51         edge[k].to=to;
52         edge[k].w=wei;
53         edge[k].next=head[from];
54         head[from]=k++;
55     }
56     if(spfa()) printf("N\n");
57     else printf("Y\n");
58     return 0;
59 }

时间: 2025-01-07 02:53:11

[FZYZOJ 1094] 路径的相关文章

[FZYZOJ 1356] 8-3 最小路径覆盖问题

P1356 -- 8-3 最小路径覆盖问题 时间限制:1000MS 内存限制:131072KB Description 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0.G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖.设计一个有效算法求一个有向无环图G 的最小路径覆盖. Input Format 第1 行有2个正整数n和m.n是

Mac下获取AppStore安装包文件路径

本文介绍了Mac下如何找到AppStore下载的安装包路径,以及如何提取出来供以后使用的相关步骤,希望对大家有所帮助. 通过远在大洋彼岸的苹果服务器下载东西,确实有够慢啊!AppStore更甚:甚至都经常提示连不上服务器,而有些软件呢,还必须从AppStore下载安装,所以没办法,谁让上了苹果的贼船呢!公司的网速更是不敢恭维,以至于基本上不下东西,除非像这次一样:手贱的把iPhone6升级到8.2.2了,然后Xcode6.1.1真机调试不成了,所以需要下个Xcode6.2.昨天刚更新的Xcode

eclipse部署tomcat修改项目访问路径(虚拟路径)

原文参考: http://www.educity.cn/wenda/147993.html http://blog.163.com/java_zf/blog/static/19926038420129240314546/ tomcat部署web项目(eclipse自动部署项目到tomcat,访问URL中不包含部署名) 最近项目中需要把项目部署到tomcat中,并且访问路径中不包含不署名,且想实现Eclipse中的自动部署,扒了好久资料,最终实现了自己的需求,呵呵,如下: 1. 把项目contex

jsp获取当前项目跟路径

在jsp中获取当前项目的根路径: <% String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%> 可以使用${basePath}获取.

JavaSE8基础 File getAbsolutePath 获取当前默认的工作文件夹路径

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) code: package jizuiku0; import java.io.File; /* * @version V17.09 */ public class GetDemo { public static void main(String[] args) { System.out.println("当前的默认工作路径是:&q

【BZOJ】2337: [HNOI2011]XOR和路径

[算法]期望+高斯消元 [题解]因为异或不能和期望同时运算,所以必须转为加乘 考虑拆位,那么对于边权为1取反,边权为0不变. E(x)表示从x出发到n的路径xor期望. 对于点x,有E(x)=Σ(1-E(y))(边权1)||E(y)(边权0)/t[x]  t[x]为x的度. 那么有n个方程,整体乘上t[x]确保精度,右项E(x)移到左边--方程可以各种变形. 每次计算完后*(1<<k)就是贡献. 逆推的原因在于n不能重复经过,而1能重复经过,所以如果计算"来源"不能计算n,

MATLAB检查指定路径中的子文件夹中的文件名中是否带有空格

测试文件夹为: clear;close all;clc; %% %程序实现的功能 %检查指定路径中的子文件夹中的文件名中是否带有空格,并去掉文件名中的空格 %% %程序中用到的之前不清楚的函数如下 %1)strfind(a,b):即找a中是否有b,如果a中有b,则输出b的位置序号.没有输出空数组 %2)isempty(a):判断数组是否为空 %3)strrep(a,b,c):就是把a中所有出现的b换为c %4)movefile(a,b):a移动为b,如C:\test1.jpg移动为C\test2

绝对路径与相对路径问题

首先辨析"/"与"\" window中的路径一般用"\": java中的路径一般用"/":如果用"\"需要对其转义成"\\" 1.绝对路径 以根目录作为参考点的的文件或文件夹所在的路径,是硬盘上的真实路径.具有唯一性的特点. 例如:C:\caosiege\python\project\C.py,代表的是C.txt的绝对路径 2.相对路径 相对于某个基准目录的路径.不具有唯一性. 例如:在

获取当前程序的路径

获取当前程序所在路径文件1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName-获取模块的完整路径. 2. System.Environment.CurrentDirectory-获取和设置当前目录(该进程从中启动的目录)的完全限定目录. 3. System.IO.Directory.GetCurrentDirectory()-获取应用程序的当前工作目录.这个不一定是程序从中启动的目录啊,有可能程序放在C:\ww