codevs——2645 Spore
- #include<queue>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define N 20010
- #define maxn 999999
- using namespace std;
- bool vist,vis[N];
- int n,m,x,y,z,w,tot;
- int in[N],dis[N],head[N];
- int read()
- {
- ,f=; char ch=getchar();
- ; ch=getchar();}
- +ch-'; ch=getchar();}
- return x*f;
- }
- struct Edge
- {
- int to,from,dis,next;
- }edge[N];
- int add(int x,int y,int z)
- {
- tot++;
- edge[tot].to=y;
- edge[tot].dis=z;
- edge[tot].next=head[x];
- head[x]=tot;
- }
- void begin()
- {
- tot=vist=;
- memset(,sizeof(in));
- memset(dis,,sizeof(dis));
- memset(vis,,sizeof(vis));
- memset(head,,sizeof(head));
- }
- int spfa(int s)
- {
- queue<int>q; bool vis[N];
- ;i<=n;i++) vis[i]=false,dis[i]=maxn;
- q.push(s),vis[s]=;
- while(!q.empty())
- {
- int x=q.front();q.pop();
- for(int i=head[x];i;i=edge[i].next)
- {
- int t=edge[i].to;
- if(dis[t]>dis[x]+edge[i].dis)
- {
- dis[t]=dis[x]+edge[i].dis;
- if(!vis[t])
- {
- in[t]++;
- vis[t]=true;
- q.push(t);
- if(in[t]>n) return true;
- }
- }
- }
- vis[x]=false;
- }
- return false;
- }
- int main()
- {
- )
- {
- n=read(),m=read();
- begin();
- &&m==) break;
- ;i<=m;i++)
- {
- x=read(),y=read(),z=read(),w=read();
- add(x,y,z),add(y,x,w);
- }
- vist=spfa();
- if(vist||dis[n]==maxn) printf("No such path\n");
- else printf("%d\n",dis[n]);
- }
- ;
- }
codevs——2645 Spore的更多相关文章
- 【最短路】【spfa】CODEVS 2645 Spore
spfa最短路+判负权回路(是否某个点入队超过n次). #include<cstdio> #include<queue> #include<cstring> usi ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1228 苹果树 树链剖分讲解
题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- codevs 1052 地鼠游戏
1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...
随机推荐
- C++ 类中的3种权限作用范围
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 #include <iostream> #in ...
- css为tbody或者li奇数偶数行样式
<style> table tbody tr:nth-child(odd){ background:#fff; } table tbody tr:nth-child(even){ back ...
- CodeDOMProvider 类
CodeDomProvider 可用来创建和检索代码生成器和代码编译器的实例.代码生成器可以生成特定语言的代码,如:C#.Visual Basic.JScript 等,而代码编译器可以将代码文件编译成 ...
- 《CSS世界》学习笔记(一)
<CSS世界>,张鑫旭著,人民邮电出版社,2017年12月第一版. 1.P9二维码链接文章的demo值得一看,可以实现有关“某些区域颜色始终保持一致”的效果. P9二维码所链接文章的一个d ...
- git上手简洁手册
下载安装git 创建文件夹:learngit 用Git CMD进入文件夹: cd learngit 用Git CMD初始化git: git init 创建文件:新建一个文件在learngit文件夹下, ...
- 【转】jvm类加载
类加载机制 JVM把class文件加载的内存,并对数据进行校验.转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制. 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命 ...
- HDU_1584_(DFS)
蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- MFC_2.2 编辑框和文本控件
编辑框和文本控件 1.拖控件 2.绑定变量.用户名密码编辑框控件类型.取名字.用户协议用值类型,默认CString. 设置属性.用户类型.选择mustiline TRUE. AOTO HScroll ...
- N18_二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- ThinkPHP---rbac权限管理
[一]概论 (1)简介 rbac(role based access controal),全称基于用户组/角色的权限控制. (2)概况 目前来说,一般项目有两种权限管理方式①传统方式:②rbac方式. ...