
——————图论——————
文章平均质量分 71
everlasting__
'-'
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj 1632: [Usaco2007 Feb]Lilypad Pond SPFA
→题目链接← spfa的原理就是不断地找,如果找到更优的更新那个点目前的状态使它变得更优 所以这个题一看就是spfa 就是判断是否有更优时,需要分三个级别,每次更新的东西不一样 比如碰到了添加荷叶一样时,就需要判断是否为最短路,如果路径长度还是一样,就要使路径数量+1 注意: 1、记录方案数的数组一定要用long long 2、inf不要作死开的太小qwq 代码: #in原创 2017-08-15 08:47:45 · 321 阅读 · 0 评论 -
bzoj 3889: [Usaco2015 Jan]Cow Routing SPFA
→题目链接← 双键值最短路,SPFA 代码: #include #include #include #include #define ll long long #define inf 0X3f3f3f3f3f3f3f3fll using namespace std; struct node{ int to,len1,len2; }; int s,e,m,n=0; v原创 2017-09-05 11:03:35 · 275 阅读 · 0 评论 -
bzoj 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
→题目链接← 跑一遍SPFA然后就完事了 代码: #include #include #include #include #include #include #define inf 233333333 using namespace std; int n,m; vectorv[20020]; bool vis[20020]; int dis[20020]; void原创 2017-09-13 20:29:30 · 317 阅读 · 0 评论 -
bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易 最短路
→题目链接← 裸最短路 代码: #include #include #include #include #include #define ll long long #define inf 233333 using namespace std; int n,m; vectorv[50050]; int dis[50050]; queueq; int main(){ s原创 2017-09-06 20:01:32 · 363 阅读 · 0 评论 -
bzoj 3386: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
→题目链接← 终于从silver进化成gold啦! 裸的最短路居然WA了两发... 第一次没看到是无向边... 第二次没看到这道题n m居然是反的... 裸的SPFA →我的板子← 代码: #include #include #include #include #include #include #define inf 233333333 using n原创 2017-09-25 15:06:10 · 518 阅读 · 0 评论 -
bzoj 3361: [Usaco2004 Jan]培根距离
→题目链接← 双向边! 然后就从1开始跑SPFA 最后对于每个点的dis值取max 代码: #include #include #include #include #include #include #define inf 233333333 using namespace std; int n,m; vectorv[20020]; bool vis[20020];原创 2017-09-27 20:36:05 · 299 阅读 · 0 评论 -
bzoj 3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四
→题目链接← 一眼最短路 但是建边是问题,n^2建边一定是不可行的 所以我们以高度为关键字排下序,然后对于每个点,只需要向两边扫,能建边就建边,直到高度相差超过2 注意:建边要建双向边 代码: #include #include #include #include #include #define inf 23333333 using namespace std;原创 2017-09-28 13:07:01 · 383 阅读 · 0 评论 -
bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级
→题目链接← 一眼分层图... 然而我还是写挂了好几次qwq 代码: #include #include #include #include #include using namespace std; struct node{ int to,len; }; struct node1{ int now,ceng,len; node1(int x,int y,int原创 2017-09-20 10:37:01 · 446 阅读 · 0 评论 -
bzoj 3393: [Usaco2009 Jan]Laserphones 激光通讯
→题目链接← 每个点的dis要保存4个,分别为从四个方向到达这个点需要的镜子数 然后正常跑spfa就好了 代码: #include #include #include #define inf 233333333 using namespace std; struct point{ int x,y; friend bool operator == (point a,原创 2017-09-12 20:44:13 · 471 阅读 · 0 评论 -
bzoj 1232: [Usaco2008Nov]安慰奶牛cheer
→题目链接← 读题就可以看出肯定用最小生成树 只按照边权找到最小生成树后,计算最后的时间是 Σ边权*2+Σ点权*出度+我们要选的过夜的点的权值 然后发现,如果只按照边权找最小生成树是不正确的 因为我们正常跑kruskal的时候每次会将边权*2+两边点的点权加进答案 所以我们可以在排序前把每条边两边点的点权都加进这个边权之中,并且把原边权*2 这样再跑kruskal就每原创 2017-10-04 23:02:24 · 292 阅读 · 0 评论 -
bzoj 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路 SPFA
→题目链接← 裸最短路 代码: #include #include #include #include #include #define inf 90000000 using namespace std; int n,m; int a[110][110]; int Min[110][110]; int to[10010]; queueq; int ma原创 2017-08-18 16:50:42 · 262 阅读 · 0 评论 -
bzoj 3396: [Usaco2009 Jan]Total flow 水流 网络流
→题目链接← 看到题面后感觉可能有什么奇技淫巧...? 但是懒得想 数据辣么小 直接网络流搞一搞就行了 代码: #include #include #include #include #include #define ll long long #define inf 10000001 using namespace std; struct node{原创 2017-09-04 08:24:22 · 289 阅读 · 0 评论 -
bzoj 1731: [Usaco2005 dec]Layout 排队布局 差分约束
→题目链接← 裸的差分约束 对于两个有好感的牛,addedge(i,j,len); 对于两个反感的牛,addedge(j,i,-len); 最后还要addedge(i,i-1,0); 之后跑最短路就行 代码: #include #include #include #include #include #include #define inf 999999999 using原创 2017-08-16 10:04:25 · 323 阅读 · 0 评论 -
bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线 二分+最短路
→题目链接← 二分ans,小于等于ans的边的距离看作0,大于ans的看作1 每次跑一下最短路,dis[n]代表有多少边是需要免费的 所以如果dis[n] 别忘了输出-1 代码: #include #include #include #include using namespace std; struct node{ int to,len; int now; }; v原创 2017-08-14 14:24:36 · 376 阅读 · 0 评论 -
bzoj 2292: 【POJ Challenge 】永远挑战 SPFA
→题目链接← 我居然没有一发A掉这个水题,真是差劲 犯了一个极其愚蠢的错误 重写了一遍就A了 然而我旁边某t姓同学告诉我说这道题djkstra 然而我并不能分清djkstra和spfa的区别orz A掉了就好 一个裸的最短路,貌似用什么方法都能过。 代码: #include #include #include #include using namespace s原创 2017-08-14 08:25:27 · 336 阅读 · 0 评论 -
bzoj 3408: [Usaco2009 Oct]Heat Wave 热浪 最短路
→题目链接← 一个裸的最短路,很水的数据貌似怎么跑都行 我用的SPFA... 很弱的代码: #include #include #include #include using namespace std; struct point{ int to,len; }; struct node{ int now,len; }; int Min[2550]; int n,m,s,原创 2017-08-07 15:53:24 · 415 阅读 · 0 评论 -
bzoj 3299: [USACO2011 Open]Corn Maze玉米迷宫 最短路
→题目链接← 愚蠢的我犯了一个愚蠢的错误 删了一个字符后就A了... 一个非常水的最短路,每个点只能访问到一次,再次访问肯定不优 所以从起点跑就好了,碰到传送点传送一下就行,只要走到了终点就是答案 乱七八糟的代码: #include #include #include #include #include using namespace std; struct nod原创 2017-08-06 16:49:40 · 627 阅读 · 0 评论 -
bzoj 2015: [Usaco2010 Feb]Chocolate Giving
→题目链接← 从编号为1的点跑spfa,然后把两个点到1的距离加一起就好了 大水题 #include #include #include #include using namespace std; struct node{ int to,len; int now; }; vectorv[50050]; int n,m,b; bool vis[50050]={false}; int原创 2017-07-22 16:32:56 · 368 阅读 · 0 评论 -
bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士
题目链接 题目背景: 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌木并带一棵给他们.当然,贝茜想早点离开这可怕的森林,于是她必须尽快完成骑士们给的任务,贝茜随身带着这片森林的地图,地图上的森林被放入了直角坐标系,并按x,y轴上的单位长度划分成了W×H(1≤原创 2017-07-07 14:06:10 · 512 阅读 · 0 评论 -
bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 floyd
→题目链接← 我简直太弱了 floyd都不会写了 orz神奇的算法 代码: #include #include #define inf 9999999 using namespace std; int n,m,T; int Min[330][330]; int main(){ scanf("%d%d%d",&n,&m,&T); for(int i=1; i<=n; i原创 2017-08-10 14:50:40 · 293 阅读 · 0 评论 -
bzoj 2019: [Usaco2009 Nov]找工作 最长路
→题目链接← 显然就是找一个最长路 两个城市有路径就建一个权值为d的边 如果有航线就建一个权值为d-z的边 边的权值表示经过这个边可以获得多少钱 最后从起点开始跑最长路就好,答案对于每个点取max 有正环就是无解,跟判负环一样 代码: #include #include #include #include #include #include #原创 2017-08-16 15:44:00 · 316 阅读 · 0 评论 -
bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+最大流
→题目链接← 二分答案,每次把边长小于mid的边放到图中,正反的边容量都为1,跑最大流 然后用最大流和T判断一下,如果大于T返回true,否则false 代码: #include #include #include #include #include #define ll long long #define inf 10000001 using namespace std;原创 2017-08-16 10:54:15 · 366 阅读 · 0 评论 -
bzoj 4500: 矩阵 差分约束
→题目链接← 【想说的话】 依旧没有什么想说的... 【题解】 对于每个三元组(x,y,z) 点x向点n+y连接一个权值为z的边 点n+y向x点连接一个权值为-z的边 然后跑dfs 当找到一个访问过的点,并且到这个点的距离与之前记录的距离不一样,那么就一定不合法 【代码】 #include #define mod 1000000007 #define原创 2017-11-23 11:42:20 · 380 阅读 · 0 评论