博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[FZYZOJ 1094] 路径
阅读量:4678 次
发布时间:2019-06-09

本文共 2224 字,大约阅读时间需要 7 分钟。

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 41 2 12 3 -13 1 13 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
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
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 }
View Code

 

转载于:https://www.cnblogs.com/TonyNeal/p/fzyzoj1094.html

你可能感兴趣的文章
系统设计
查看>>
matlab运行过程中出现找不到指定模块问题解决
查看>>
java JNI开发
查看>>
linux网络编程之socket(十四):基于UDP协议的网络程序
查看>>
输出有序数组的中两个元素差值为指定值diff的两个元素
查看>>
Verilog实现同步FIFO
查看>>
APACHE支持静态化
查看>>
redis数据类型的使用和介绍
查看>>
(C语言)共用体union的用法举例
查看>>
Linux监控本机当前状态命令
查看>>
Python输出&输入
查看>>
重新认识Attributes.add
查看>>
c# 三种计算程序运行时间的方法
查看>>
东航电商前端技术周刊第二期20180608
查看>>
BZOJ2456 mode
查看>>
spring,hibernate,struts又各属于哪一层,作用各是什么?
查看>>
2018/3/20 noip模拟赛 5分
查看>>
加快Chrome网页开启速度
查看>>
POJ 3714 平面最近点对
查看>>
Spark工作机制-调度与任务分配
查看>>