摘要: 题意:给出一张n个点m条边的无向图( 2 2 #include 3 #include 4 #include 5 #include 6 #define INF 1 pii; 11 int v[maxm],next[maxm],w[maxm]; 12 int first[maxn],d[maxn],work[maxn],q[maxn]; 13 int e,S,T,N,M; 14 struct Edge{ 15 int from,to,dist; 16 }edge[100010]; 17 18 void init(){ 19 e = 0; 20 memse... 阅读全文
posted @ 2013-10-27 20:10 浙西贫农 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 有N个男孩,N个女孩。每个女孩可以选择一个没有跟他吵过架的男孩结婚。如果女孩X和女孩Y是朋友,且Y没有和男孩Z吵过架,女孩X同样可以选择男孩Z和自己结婚。另外,如果A和B是朋友,B和C是朋友,那么A和C也必定是朋友。每一轮中,每个女孩还可以额外选择K个自己原本不打算和她配对的男孩配对。一旦所有的女孩都找到了男友,那么他们就可以开始一轮新的游戏了,在每一轮新的游戏中,他们将使用相同的规则进行游戏,但是所有的女孩都不会选择之前选择过的男友了。问他们最多可以进行几轮游戏。跟HDU 3081基本一样,就是多了一个条件:每一轮中,每个女孩还可以额外选择K个自己原本不打算和她配对的男孩配对。这里的处理是把 阅读全文
posted @ 2013-10-27 17:39 浙西贫农 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个男孩,N个女孩。每个女孩可以选择一个没有跟他吵过架的男孩结婚。如果女孩X和女孩Y是朋友,且Y没有和男孩Z吵过架,女孩X同样可以选择男孩Z和自己结婚。另外,如果A和B是朋友,B和C是朋友,那么A和C也必定是朋友。一旦所有的女孩都找到了男友,那么他们就可以开始一轮新的游戏了,在每一轮新的游戏中,他们将使用相同的规则进行游戏,但是所有的女孩都不会选择之前选择过的男友了。问他们最多可以进行几轮游戏。可以二分游戏的轮次数。首先做floyd闭包传递,确定女孩i可以与哪些男孩j配对。假设一共可以进行k轮游戏,那么从起点S向每个女孩i连一条边(S,i,k),从每个男孩向汇点T连一条边(i,T,k) 阅读全文
posted @ 2013-10-27 13:29 浙西贫农 阅读(233) 评论(0) 推荐(0) 编辑