摘要: 并查集:做题的关键是Union和findSet的编写 ,其中还是有章可循的,下面是poj1988的一个题目// 1988.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;int p[30010],rank[30010],size[30010],N;int findSet(int x){ int fa; if(x==p[x]) return x; fa=p[x]; p[x]=findSet(fa); rank[x]+=rank[fa];//更新u值,因为路 阅读全文
posted @ 2011-05-19 19:11 张兰云 阅读(216) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <queue>#include <vector>#define MAXN 110#define INF 1 << 29using namespace std; struct Node{ int id,dis,c; friend bool operator <(const Node &a,const Node &b){ if(a.dis!=b.dis) return a.dis>b.dis; else return a.c>b.c;}}; int n,m,cm 阅读全文
posted @ 2011-05-19 11:11 张兰云 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 题目大意是:在一个有向图中,每条边有距离和费用两个参数,求从 1 到 N 点的费用和在不超过给定费用的情况下求最短路。以 dijkstra 算法为基础,每次选择费用满足下具有最小距离的边.#include <iostream>#include <queue>#include <vector>#define MAXN 110#define INF 1 << 29using namespace std; struct Node{ int id,dis,c; friend bool operator <(const Node &a,con 阅读全文
posted @ 2011-05-19 11:05 张兰云 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 题目大意是:在一个有向图中,每条边有距离和费用两个参数,求从 1 到 N 点的费用和在不超过给定费用的情况下求最短路。以 dijkstra 算法为基础,每次选择费用满足下具有最小距离的边.#include <iostream>#include <queue>#include <vector>#define MAXN 110#define INF 1 << 29using namespace std; struct Node{ int id,dis,c; friend bool operator <(const Node &a,con 阅读全文
posted @ 2011-05-19 11:01 张兰云 阅读(263) 评论(0) 推荐(0) 编辑