图论
sky_zdk
这个作者很懒,什么都没留下…
展开
-
uva 11280 求2点之间最短距离(图中不超过k个节点)
#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;mapmp;string s,s1,s2;int n,m,q,dp[1010][1010],x[1010],y[1010],c[1010];void solve(){ for(int i=1;i<n;i++) dp[i][0]=I原创 2017-09-23 12:29:33 · 494 阅读 · 0 评论 -
uva 10972 添加几条变使得无向图为双联通分量
#include#include#includeusing namespace std;struct node{ int to,next;}e[100000];int head[10000],pre[10000],low[10000];int cnt,dfs_clock,n,m,res;void add_edge(int from,int to){ e[cnt].to=to;原创 2017-09-19 13:23:40 · 406 阅读 · 0 评论 -
uva 439 前序,中序遍历 转化成后序遍历 不用指针!用数组
前序,中序遍历 转化成后序遍历 不用指针!用数组原创 2017-09-28 12:09:44 · 441 阅读 · 0 评论 -
LA 4255 给定一些数的关系 求这些的一组确定的值
#include#include#includeusing namespace std;int G[20][20],sum[20],in[20],n;void solve(){ queueq; int cnt=0; for(int i=0;i<=n;i++) if(!in[i]) q.push(i); while(!q.empty()){ int x=q.front();原创 2017-09-12 21:07:25 · 166 阅读 · 0 评论 -
uva437 DAG最长路
#include#include#include#define k1(x) ((x+1)%3)#define k2(x) ((x+2)%3)using namespace std;int dp[36][4],d[36][4],n;int dfs(int lo,int k){// printf("%d %d\n",lo,k); if(dp[lo][k]) return dp[lo]原创 2017-10-11 07:21:47 · 227 阅读 · 0 评论 -
平面n个点 求从最左边点到最右边点再返回的最短路长 uva 1347
#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;int x[1010],y[1010],n;double dp[1010][1010],d[1010][1010];double dfs(int t1,int t2){ if(dp[t1][t2]) return dp[t1][t2]原创 2017-10-11 09:53:05 · 312 阅读 · 0 评论 -
加边 成为强联通分量 poj 1236
#include#include#include#include#include#includeusing namespace std;stack st;vector mp[1010];int low[130],dfn[130],belong[130],vis[130],cnt,scc,n,in[130],out[130];void Tarjan(int u){ vis[u]原创 2018-03-19 20:03:23 · 194 阅读 · 0 评论 -
求割点个数
#include#include#include #include#includeusing namespace std;vector mp[10010];int root,low[130],dfn[130],vis[130],num[130],cnt;void Tarjan(int u){ low[u] = dfn[u] = ++cnt; vis[u] = 1; for(原创 2018-03-19 20:35:20 · 352 阅读 · 0 评论 -
无向图求桥的个数(有重边)
#include#include#include #include#include#includeusing namespace std;vector mp[10010];int ans,low[130],dfn[130],vis[130],cnt;struct node{ int x,y;}a[130];bool cmp(const node u,const node v原创 2018-03-19 21:48:20 · 1728 阅读 · 0 评论 -
给定一个连通图 q个询问 每次加一条边 每次求出有多少个桥 poj 3694
#include#include#include#include#includeusing namespace std;const int maxn = 101000;vector mp[maxn];int dfn[maxn],low[maxn],pre[maxn],p[maxn],cnt,ans;int find(int u){ return u == pre[u]?u:(p原创 2018-03-20 18:10:32 · 264 阅读 · 0 评论 -
无向图 求加几条边可以得到双联通图 poj 3177
#include#include#include#include using namespace std;const int maxn = 5050;vector mp[maxn];bool g[maxn][maxn];int dfn[maxn],low[maxn],cnt,ans,d[maxn];void Tarjan(int u,int fa){ dfn[u] = low[原创 2018-03-20 19:34:16 · 347 阅读 · 0 评论 -
每个格子只能走有限次 求有多少人可以走出方格 每个人一次最多移动d格
#include#include#include#includeusing namespace std;const int maxn = 1200;const int INF = 0x3f3f3f3f;struct{ int to,next,flow;}e[maxn * maxn];int S,T;int head[maxn],cnt,d[maxn];void add_ed原创 2018-03-30 19:09:44 · 728 阅读 · 0 评论 -
hdu 2444 二分图匹配
#include#includeusing namespace std;int G[220][220],vis[220],n,m,mat[220];int dfs(int u,int flag){ if(vis[u] != -1){ if(vis[u] == flag) return 1; else return 0; } vis[u] = flag; for(int原创 2018-03-26 12:01:09 · 226 阅读 · 0 评论 -
求边数最少的最小割
#include#include#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[2010];int head[1010],cnt,S,T,d[1010],cur[1010],n,m;void add_edge(int原创 2018-04-09 19:47:12 · 699 阅读 · 0 评论 -
LA 3231 Fair Shar
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[2000010];int a[100010],b[100010],d[100010];in...原创 2018-05-17 22:01:38 · 405 阅读 · 0 评论 -
uva11082 知道矩阵每行每列数字之和 求矩阵每一个元素 最大流
#include#include#include#define INF 0x3f3f3f3fusing namespace std;int n,m,a[50],b[50],cap[50][50],pre[60],flow[50];int bfs(){ memset(pre,-1,sizeof(pre)); pre[0]=flow[0]=INF; queueq; q.push(0原创 2017-09-27 11:44:23 · 1696 阅读 · 0 评论 -
uvalive 3268 二分图匹配 或者 最大流
每个人可以分到若干组内,但实际上只把他分到一个组内,让人数最多的那个组 人数尽可能小原创 2017-09-27 09:46:08 · 409 阅读 · 0 评论 -
Slim Span 求一颗生成树 使得最大边与最小边的差值最小
#include#include#includeusing namespace std;struct node{ int u,v,c;}e[100010];int pre[100010],n,m;bool cmp(const node &a,const node &b){ return a.c<b.c;}int find(int x){ return x==pre[x]?x原创 2017-09-23 14:26:53 · 241 阅读 · 0 评论 -
uva 10600 次小生成树
#include#include#include#define INF 0x3f3f3f3fusing namespace std;int G[160][160],d[160][160],pre[160],dis[160],vis[160],use[160][160];int res1,res2,n,m;void prime(){ memset(d,0,sizeof(d)); m原创 2017-09-23 16:35:14 · 255 阅读 · 0 评论 -
uva 11183 有向图最小生成树
有向图最小生成树原创 2017-09-24 14:25:53 · 213 阅读 · 0 评论 -
uva 10816 最小生成树 + 最短路
#include#include#include#include #include #include using namespace std;struct nod{ int u,v; double t,w;}e[1000100];int pre[110],n,m,s,t,vis[110];struct node{ int to; double w; node(int原创 2017-09-24 16:08:18 · 280 阅读 · 0 评论 -
uva 10369 最小生成树
#include#include#include#includeusing namespace std;int pre[1000];double x[1000],y[1000];double dis(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}st原创 2017-09-24 16:52:24 · 214 阅读 · 0 评论 -
uvalive 4848 Tour Belt
#include#include#include#define INF 0x3f3f3f3fusing namespace std;int pre[5050],num[5050];struct node{ int u,v,w;}e[2500050];bool cmp(const node &a,const node &b){ return a.w>b.w;}int find原创 2017-09-25 08:20:18 · 354 阅读 · 0 评论 -
LA 3353 Optimal Bus Route Design
最大权二分图匹配原创 2017-09-25 20:08:49 · 232 阅读 · 0 评论 -
uva 10615 二分图匹配 每个点上的不同边必须染上不同颜色 求最小染色数
每个点上的不同边必须染上不同颜色 求最小染色数原创 2017-09-25 21:51:52 · 1296 阅读 · 0 评论 -
uva 11396 二分图判定 (每条边连接的点不在同一范围内)
#include#includeusing namespace std;struct node{ int to,next;}e[10000]; int head[10000],cnt,vis[100000];void add_edge(int from,int to){ e[cnt].to=to; e[cnt].next=head[from]; head[from]=cnt++原创 2017-09-18 09:05:02 · 407 阅读 · 0 评论 -
uvalive 4288 Cat vs. Dog 求二分图的最大独立集
求二分图的最大独立集原创 2017-09-26 12:55:18 · 301 阅读 · 0 评论 -
uvalive 3276 The Great Wall Game 把一个图中的棋子 移动到同一直线 或者斜线上的最小步数
把一个图中的棋子 移动到同一直线 或者斜线上的最小步数原创 2017-09-26 20:09:00 · 594 阅读 · 0 评论 -
uva 10765 (求去掉每一个一个点 可以得到联通块的个数 )
求去掉每一个一个点 可以得到联通块的个数 )原创 2017-09-18 20:58:29 · 538 阅读 · 0 评论 -
uvalive 2966 求一个二分图 所有的完美匹配
求一个二分图 所有的完美匹配原创 2017-09-26 21:46:58 · 307 阅读 · 0 评论 -
uva 10806 从一个点到另外1个点的2条不重复边的路径
从一个点到另外1个点的2条不重复边的路径原创 2017-09-27 08:52:58 · 645 阅读 · 0 评论 -
uva 10779
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int INF = 0x3f3f3f3f;struct node{ int to,next,flow;}e[1000010];int a[100010],b[100010],d[10010];int...原创 2018-05-18 20:48:43 · 386 阅读 · 0 评论