上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页
摘要: int Dfs(int k){ for(int i=0;i<v[k].size();i++){ int a=v[k][i]; if(used[a]==0){ used[a]=1; if(link[a]==-1||Dfs(link[a])){link[a]=k;return 1;} } }return 0;} 阅读全文
posted @ 2014-03-25 20:48 forever97 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边就会被看守住,问把所有边看守住最少需要放多少士兵。dproot[ i ]表示以i为根的子树,在i上放置一个士兵,看守住整个子树需要多少士兵。掌握了一个图论知识:图的最小点覆盖=二分图的最大匹配#include #include #include using namespace std;const int N=100000;int link[N],used[N];vector v[N];int Dfs(int k){ for(int i=0;i #include #include... 阅读全文
posted @ 2014-03-25 20:44 forever97 阅读(171) 评论(0) 推荐(1) 编辑
摘要: #include #include #include #include using namespace std; const int N=20005; const int INF=9999999; typedef pairseg; priority_queue,greater >q; int d[N],head[N],u[N],v[N],w[N],next[N],n,m,a,b,c; bool vis[N]; void build(){ memset(head,-1,sizeof(head)); for(int e=1;ed[x]+w[e]){ ... 阅读全文
posted @ 2014-03-24 09:32 forever97 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 最短路,建图太麻烦,略过……#include #include #include const int INF=9999999; using namespace std; struct node{ int v,i; node(int a,int b){v=a,i=b;} bool operator a.v;} }; int n,m,map[500][500]; int done[500],d[500]; int dij(){ priority_queue q; memset(done,0,sizeof done); ... 阅读全文
posted @ 2014-03-24 09:29 forever97 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个电站,每个电站都有一定的电量,电站之间有一定距离,我们要从0点出发去占领一些电站,使得占领的电站电量之和超过总电量的一半,求达到条件所要走的最短距离。如果可能的话,输出距离,否则输出不可能。题解:首先计算所有点到起点的最短路,就得到了代价,现在又有价值,那么就是一个01背包~#inc... 阅读全文
posted @ 2014-03-23 19:16 forever97 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定无向图,每一条路上都有限重,求能到达目的地的最大限重,同时算出其最短路。题解:由于有限重,所以二分检索,将二分的值代入最短路中,不断保存和更新即可。#include #include #include #include using namespace std; const int N=20005; const int INF=9999999; typedef pairseg; priority_queue,greater >q; int l,r,mid,begin,end,d[N],head[N],u[N],v[N],w[N],next[N],le[N],n... 阅读全文
posted @ 2014-03-23 16:13 forever97 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题解:由于是多个起点和单个终点,所以反向构图,那么就是多个终点和单个起点了,于是直接最短路。#include #include #include #include using namespace std; const int N=20005; const int INF=9999999; typedef pairseg; priority_queue,greater >q; int begin,end,d[N],head[N],u[N],v[N],w[N],next[N],n,m,a,b,c,k; bool vis[N]; void build(){ mems... 阅读全文
posted @ 2014-03-23 15:21 forever97 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 最短路~#include #include #include #include using namespace std; const int N=20005; const int INF=9999999; typedef pairseg; priority_queue,greater >q; int begin,end,d[N],head[N],u[N],v[N],w[N],next[N],n,m,a,b,c; bool vis[N]; void build(){ memset(head,-1,sizeof(head)); for(int e=1;ed[... 阅读全文
posted @ 2014-03-23 14:56 forever97 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题解:最短路,注意是无向图,而且有起点和终点相同的情况……#include #include #include #include #include #include using namespace std;const int N=20005;const int INF=9999999;typedef pairseg;mapmp;priority_queue,greater >q;int d[N],u[N],v[N],w[N],head[N],next[N],m,n,k,p,cnt,min;string begin,end,s;bool vis[N];void build(){ memse 阅读全文
posted @ 2014-03-19 15:19 forever97 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题解:最短路~#include #include #include #include using namespace std;const int N=20005;const int INF=9999999;typedef pairseg;priority_queue,greater >q;int d[N],u[N],v[N],w[N],head[N],next[N],a,b,c,m,n,k,p,cnt,min;bool vis[N];void build(){ memset(head,-1,sizeof(head)); for(int e=1;ed[x]+w[e]){ ... 阅读全文
posted @ 2014-03-19 13:55 forever97 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题解:最短路模板题#include #include #include #include using namespace std; const int N=20005; const int INF=9999999; typedef pairseg; priority_queue,vector,greater >q; int d[N],head[N],u[N],v[N],w[N],next[N],n,m,a,b,c; bool vis[N]; void build(){ memset(head,-1,sizeof(head)); for(int e=1;... 阅读全文
posted @ 2014-03-18 20:23 forever97 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题解:最大生成树加判环……#include #include using namespace std;struct node{int a,b,l;}seg[100005];bool cmp(node a,node b){return a.l>b.l;}int ans,m,n,f[10005],mark[10005];int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}int main(){ while(scanf("%d%d",&n,&m)){ if (m==0&&n==0)break; ans= 阅读全文
posted @ 2014-03-17 10:14 forever97 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 第1题 绿组. 奶牛接力赛[relay]题目描述 农夫约翰已经为一次赛跑选出了K(2≤K≤40)头牛组成了一支接力队.赛跑在农夫约翰所拥有的农场上进行,农场的编号为1到Ⅳf4≤Ⅳ<800),Ⅳ个农场之间共有M(1≤M≤4000)条双向道路,每条双向道路连接一对不同的农场,一对不同的农场之间最多只有一条双向道路.你将得到每条牛为了穿过每个道路所需要的时间.比赛的起点设在1号农场,终虑设在Ⅳ号农场,比赛开始后第一头牛开始从1号农场出发,在Ⅳ号农场到达终点.第一头牛结束之后马上就让下一头牛从1号农场开始,跑向Ⅳ号农场,直到所有的牛都跑过一次为止. 作为比赛的规则,任意的2头牛跑过的路线不能完. 阅读全文
posted @ 2014-03-16 17:10 forever97 阅读(949) 评论(0) 推荐(0) 编辑
摘要: 题解:最小生成树#include #include using namespace std;struct node{int a,b,l;}seg[25005];int T,z,x,t,f[505],m,n,k; char c;int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}bool cmp(node a,node b){return a.l'9');x=c-'0'; while(c=getchar(),c>='0'&&c<='9')x=x*10+c-' 阅读全文
posted @ 2014-03-16 15:29 forever97 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题解:最小生成树…………#include #include using namespace std;struct node{int a,b,l;}seg[900];int f[27],m,n,a,b; char c;int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}bool cmp(node a,node b){return a.l'Z');x=c-'A';}void scan(int &x){ while(c=getchar(),c'9');x=c-'0'; while(c=ge 阅读全文
posted @ 2014-03-16 14:14 forever97 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题解:最小生成树#include #include using namespace std;struct node{int a,b,l;}seg[10000];int f[105],m,n,flag; char c;int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}bool cmp(node a,node b){return a.l'9');x=c-'0'; while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0' 阅读全文
posted @ 2014-03-16 13:53 forever97 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题解:最小生成树#include #include using namespace std;struct node{int a,b,l;}seg[10000];int f[105],m,n; char c;int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}bool cmp(node a,node b){return a.l'9');x=c-'0'; while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';}in 阅读全文
posted @ 2014-03-16 13:43 forever97 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2014-03-15 13:46 forever97 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2014-03-15 13:29 forever97 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Prim算法#include #include #include int n;double map[210][210],a[210];int b[210];void met(){ int i,t=1; a[t]=0; while(b[t]==0){ b[t]=1; for(i=1;imap[t][i]) a[i]=map[t][i]; double min=200000000; for(i=1;ia[i])min=a[i],t=i; }}int main(){ int i,j,k... 阅读全文
posted @ 2014-03-10 10:42 forever97 阅读(111) 评论(0) 推荐(0) 编辑
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 38 下一页