题目:
链接:点击打开链接
题意:
思路:
对dijkstra稍作修改即可,每次更新dis[]时改为乘积。
代码:
#include
#include
#include
using namespace std;
#define INF 100000000
const int N = 1010;
int n,m;
double map[N][N]...
分类:
其他好文 时间:
2014-07-01 10:53:50
阅读次数:
180
本题也是个标准的并查集题解。
操作完并查集之后,就是要找和0节点在同一个集合的元素有多少。
注意这个操作,需要先找到0的父母节点,然后查找有多少个节点的额父母节点和0的父母节点相同。
这个时候需要对每个节点使用find parent操作,因为最后状态的时候,节点的parent不一定是本集合的根节点。
#include
const int MAX_N = 30001;
stru...
分类:
其他好文 时间:
2014-07-01 10:50:15
阅读次数:
179
题目:
链接:点击打开链接
题意:
思路:
代码:
#include
#include
#include
using namespace std;
int map[110][110];
int dp[110],next[110],ins[110];
int t,n,m;
void output(int x)
{
if(x == -1)...
分类:
其他好文 时间:
2014-07-01 08:55:28
阅读次数:
174
题目:
链接:点击打开链接
题意:
输入n,给出n行数据,每行有两个字符串,输出关系网络中朋友的个数,n行。
思路:
代码:
#include
#include
#include
#include
using namespace std;
const int N = 22;
const int M = 200020;
st...
分类:
其他好文 时间:
2014-07-01 08:14:07
阅读次数:
189
题目:
链接:点击打开链接
题意:
思路:
冲突的条件是:两个人坐在同一行,同时他们到根节点的差值等于他们之间的差值,这时就产生冲突了。于是我们可以用一个dist数组来保存节点到根的距离,而这个距离在路径压缩的时候更新一下就可以了,dist[x]+=dist[parent[x]]。然后就是合并后的距离,令r1=Find(u),r2=Fin...
分类:
其他好文 时间:
2014-07-01 08:13:34
阅读次数:
201
题目:
链接:
题意:
思路:
代码:
#include
#include
#include
using namespace std;
const int N = 30030;
int root[N];
int sum[N],rank[N];//sum[i]表示i下面的积木个数
int q;
int findset(int x)
{
if(x == r...
分类:
其他好文 时间:
2014-07-01 08:12:55
阅读次数:
178
本题是标准的并查集了,最后利用这些集求有多少独立集。
所以这里也写个标准程序过了。
最后查找独立集合: 看有多少个节点的父母节点是自己的,那么就是独立集合了。自己做自己的父母当然最独立的了,没有任何依赖,呵呵。
#include
const int MAX_N = 50001;
//const int MAX_M = MAX_N/2 * (MAX_N-1) + 1;
int N, M;
...
分类:
其他好文 时间:
2014-07-01 07:46:53
阅读次数:
160
问题:
链接:点击打开链接
题意:
思路:
代码:
#include
#include
#include
using namespace std;
#define INF 1000000000000
typedef __int64 LL;
const int N = 110;
__int64 dis[N][N],place[N];
__int64 L1,L2,L...
分类:
其他好文 时间:
2014-07-01 07:16:25
阅读次数:
248
题目:
链接:点击打开链接
题意:
给一个图,求1到各点和各点到1最短路。
思路:
先spfa,然后反向建图,在spfa就行了。
代码:
#include
#include
#include
#include
using namespace std;
#define INF 100000000
const int N = 10...
分类:
其他好文 时间:
2014-07-01 07:15:44
阅读次数:
230