
图论
小菜鸡在努力啊
余生很长,请多指教。
展开
-
T46449 有向图无环(DAG)的判定 (dfs)
T46449 有向图无环(DAG)的判定提交172通过69时间限制1.00s内存限制125.00MB提交答案加入收藏题目提供者BDFZ-OIER难度暂无评定历史分数100提交记录标签暂无标签进入讨论版相关讨论暂无推荐题目展开题目描述给定无权有向图G(V,E),请判断G是否是一个有向无环图(DAG)。*在有向图中,若存在B边,则存在环。输入格式第一行包含两个整数N、M,表示该图共有N个结点和M条有向边。(N <= 5000,M <= 200原创 2020-07-19 18:01:22 · 781 阅读 · 0 评论 -
T67747 边的分类 (图上dfs)
T67747 边的分类提交20通过15时间限制1.00s内存限制62.50MB提交答案加入收藏题目提供者BDFZ-OIER难度暂无评定历史分数100提交记录标签暂无标签进入讨论版相关讨论暂无推荐题目暂无展开题目描述给定无权有向图G(V,E),dfs确定每条边的种类。当边(u, v)第一次被遍历,考虑v的颜色1.白色,(u,v)为T边,包含在dfs树中2.灰色,(u,v)为B边,dfs树中子孙指向自己直系祖先的一条边3.黑色: (u,v)为F边或C原创 2020-07-19 18:00:30 · 342 阅读 · 0 评论 -
P1194 买礼物 (最小生成树)
题目描述又到了一年一度的明明生日了,明明想要买BB样东西,巧的是,这BB样东西价格都是AA元。但是,商店老板说最近有促销活动,也就是:如果你买了第II样东西,再买第JJ样,那么就可以只花K_{I,J}KI,J 元,更巧的是,K_{I,J}KI,J 竟然等于K_{J,I}KJ,I 。现在明明想知道,他最少要花多少钱。输入格式第一行两个整数,A,BA,B。接下来BB行,每行BB个数,第II行第JJ个为K_{I,J}KI,J 。我们保证K_{I,J}=K_{J,I}原创 2020-07-13 16:27:50 · 438 阅读 · 0 评论 -
P1037 产生数 (floyd+高精)
题目描述给出一个整数 n(n<10^30)和 k 个变换规则(k≤15)。规则:一位数可变换成另一个一位数。规则的右部不能为零。例如:n=234。有规则(k=2):2->53->6上面的整数 234 经过变换后可能产生出的整数为(包括原数):234534264564共 4 种不同的产生数。现在给出一个整数 n 和 k 个规则。求出经过任意次的变换(0次或多次),能产生出多少个不同整数。仅要求输出个数。输入格式第一行两个整数 n,k。接下来 kk 行,每行原创 2020-07-10 14:37:07 · 399 阅读 · 0 评论 -
P2853 [USACO06DEC]Cow Picnic S (图的dfs)
The cows are having a picnic! Each of Farmer John’s K (1 ≤ K ≤ 100) cows is grazing in one of N (1 ≤ N ≤ 1,000) pastures, conveniently numbered 1…N. The pastures are connected by M (1 ≤ M ≤ 10,000) one-way paths (no path connects a pasture to itself).The原创 2020-07-07 14:50:13 · 337 阅读 · 0 评论 -
poj3259 (spfa找负环)
WormholesTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 80990 Accepted: 30023DescriptionWhile exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that原创 2020-06-23 21:51:46 · 189 阅读 · 0 评论 -
P4017 最大食物链计数(拓扑排序)
P4017 最大食物链计数入口题目背景你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。题目描述给你一个食物网,你要求出这个食物网中最大食物链的数量。(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)Delia 非常急,所以你只有 11 秒的时间。由于这个结果可能过大,你只需要输出总数模上 801120原创 2020-06-11 18:52:12 · 186 阅读 · 0 评论 -
P1629 邮递员送信(dijkstra)
P1629 邮递员送信提交9.89k通过4.14k时间限制1.00s内存限制125.00MB提交答案加入收藏题目提供者xmyzwls难度普及/提高-历史分数100 提交记录 查看题解标签进入讨论版相关讨论推荐题目 展开题目描述有一个邮递员要送东西,邮局在节点 11。他总共要送 n-1n−1 样东西,其目的地分别是节点 22 到节点 nn。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 mm 条道路。这个邮递员每次只能带一样东西,并且运送每件物品过原创 2020-06-04 20:28:55 · 590 阅读 · 0 评论 -
P3916图的遍历(dfs)
洛谷3916按题目来每次考虑每个点可以到达点编号最大的点,不如考虑较大的点可以反向到达哪些点循环从N到1,则每个点i能访问到的结点的A值都是i每个点访问一次,这个A值就是最优的,因为之后如果再访问到这个结点那么答案肯定没当前大了#include<iostream>#include<queue>#include<cstring>#include<algorithm>#include<vector>using namespace st原创 2020-05-30 23:14:11 · 343 阅读 · 0 评论 -
P4779 【模板】单源最短路径(标准版)(dijkstra)
洛谷4779求起点到所有点的最小距离。#include<iostream>#include<queue>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int maxn=111005;struct node{ int v,w; node(int v,int w):v(v),w(w){} bool opera原创 2020-05-30 23:12:02 · 179 阅读 · 0 评论 -
最小生成树(模板)
最小生成树(MST):将给出的所有点连接起来(即从一个点可到任意一个点),且连接路径之和最小的图叫最小生成树。数据结构:树形结构,或者说是直链型结构,因为当n个点相连,且路径和最短,那么将它们相连的路一定是n-1条实现思路:将点分为在树中的点与不在树中的点,每次取出树中点的连接的最小路径,且该路径连接的点不在树中,然后将该路径连接的点加入树中,重复并进行路径更新,即松弛,当取出边达到n-1条时,树已建立。洛谷P1546求一条路径,使得u到v连通的路径的最小长度(Prim算法)本质上还是贪心思想原创 2020-05-29 22:19:26 · 376 阅读 · 0 评论 -
拓扑排序(模板)
u107394#include<bits/stdc++.h>using namespace std;const int maxn=100005;vector<int>adj[maxn];int degree[maxn];int main(){ int n,m; cin>>n>>m; while(m--){ int a,b; cin>>a>>b; adj[a].push_back(b); d原创 2020-05-29 10:46:27 · 162 阅读 · 0 评论 -
New Year Permutation(floyd)
Codeforce 500BB.New Year Permutation time limit per test2 seconds memory limit pertest256 megabytes inputstandard input outputstandard output User aintahas a permutation p 1, p 2, …, p n. As the New Year is coming, hewants to make his permutation as原创 2020-05-27 21:39:15 · 179 阅读 · 0 评论 -
floyd模板
floyd算法:用来求结点间的最小路径;(一般题目给的结点数不超过500个才用此法,INF不宜取过大)for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j)d[i][j]=0; else if(a[i][j]d[i][j]=a[i][j]; else d[i][j]=Inf; } } for(int k=1;k<=n;k++){ for(int i=1;i<=原创 2020-05-27 21:17:05 · 187 阅读 · 0 评论 -
SPFA算法模板
struct node{ int v,w;//终点和权重 };vector<node>adj[maxn];int vis[maxn];int d[maxn];const int Inf=0x3f3f3f3f;queue<int>q;int n,m,s,t;void spfa(){ for(int i=1;i<=n;i++){ d[i]=Inf; } d[s]=0; vis[s]=1; q.push(s); while(!q.empty()){原创 2020-05-27 14:10:39 · 170 阅读 · 0 评论 -
dijkstra算法(模板)
洛谷1339题目意思:给定n个结点和m条边,求s到t的最短距离。我们知道在无权图中求最短路可以直接用bfs,在有权图bfs就失效了,我们考虑用dijkstra算法(负权图就不能用).(本质还是贪心算法)#include<iostream>#include<cstring>#include<queue>int g[1005][1005];using namespace std;int n,m,s,t;struct edge{ int v,w;//边的原创 2020-05-26 23:10:43 · 790 阅读 · 0 评论 -
图的dfs(模板)
洛谷T464462思路:对每个节点都进行一次dfs,在dfs前先看看这个点有没有访问过,没访问过就cnt++,对这个点dfs。让每个结点最大程度的染他经过的点。#include<iostream>#include<cstdio>#include<vector>using namespace std;int n, m, cnt, vis[5010];vector <int> a[5010];void dfs(int u){ vis[u]原创 2020-05-26 20:37:33 · 268 阅读 · 0 评论