
ACM--图论
lxf90
这个作者很懒,什么都没留下…
展开
-
poj 1789 Truck History
<br /> where the sum goes over all pairs of types in the derivation plan such that to is the original type and td the type derived from it and d(to,td) is the distance of the types1/Σ(to,td)d(to,td)<br /><br />派生关系有向边,边权为两个串的不同字符的个数,要求的是找出一种用到所有串的派生关系,使得Q最原创 2011-04-30 01:36:00 · 248 阅读 · 0 评论 -
poj 1094 Sorting It All Out
每输入一个关系拓扑排序一次注意当有多种情况的时候 是否已经有环, 有环则直接Sorted sequence cannot be determined.判断是否有环很多方法,我用的是传递闭包判断map[i][i]是否为1 为1则有环#include#includeconst int MAXN = 27;int n, m, cnt;int in[MAXN], map[MAXN][MAXN];bool finish, more;char sort[MAXN];bool floyed(原创 2011-05-03 21:16:00 · 309 阅读 · 0 评论 -
poj 1125 Stockbroker Grapevine
<br /> <br />给你n个人的联系情况,对任意一个人,求出这个人发消息到其他n-1个人的时间,得到n-1个时间中的最大值,n个最大值中的最小值就是所求。如果网络不通,那就输出disjoint<br />Floyed算出任意两个人的最小时间<br />#include <iostream>#include <fstream>using namespace std;const int MAXN = 101;const int INF = 0x7FFF;int m , n;int原创 2011-05-03 21:07:00 · 285 阅读 · 0 评论 -
poj 3660 Cow Contest
没完全搞懂啊~~留代码研究#includeusing namespace std;const int MAXN = 101;int map[MAXN][MAXN], n, m;void floyed(){ for(int k = 1; k > n >> m; while(m--){ cin >> a >> b; map[a][b] = 1; map[b][a] = -1; } /*for(int i =1;原创 2011-05-03 23:37:00 · 383 阅读 · 0 评论 -
poj 2472 106 miles to Chicago
<br />边的权为不被抓住的概率,注意是概率,需要求的是能逃跑的最大可能<br />这题与一般的最短路不同,体现在权值上<br />所以把一般权值的相加改成相乘,利用floyed的算法框架求解<br />另外注意精度<br />#include<stdio.h>#include<string.h>#define MAXN 101double map[MAXN][MAXN]; //边权用浮点数存int n, m;void floyed(){ for(int k = 0; k < n;原创 2011-05-03 21:33:00 · 581 阅读 · 0 评论 -
poj 1386 Play on Words
转换成图论一笔画问题如何转换,一个单词的第一个字母和最后一个字母作为点,由第一个字母向最后一个字母连一条有向边问题转化为判断一个有向图是否存在欧拉回路或者欧拉路径有向图判断是否存在欧拉回路或者欧拉路径首先要满足其基图(即把边改成无向的图)是连通的(并查集判断)判断的时候要注意两种情况回路或者路径,满足回路的条件是每个定点的入度与出度相等,路径的条件是当且仅有一个顶点的入度比出度大一,和当且仅有一个顶点的出度比入度大一#include#includeconst int MAXN = 26;int原创 2011-05-03 20:29:00 · 392 阅读 · 0 评论 -
poj 3268 Silver Cow Party & zoj 2008 Invitation Cards
参考 算法导论 p580 单终点最短路径问题这两题是一样的求法,先正着求一次最短路,再将边反向,再求一次矩阵表示图的话就是将矩阵转置一次,邻接表表示的话就是读入边的时候,建两个表poj3268dijkstra求最短路#include #include using namespace std;const int MAXN =1001;int n,m,x;const int INF = 0x7FFF;int G[MAXN][MAXN];int dist1[MAXN];int su原创 2011-05-01 01:30:00 · 455 阅读 · 0 评论 -
poj 2367 Genealogical tree
<br />裸的拓扑排序 图用邻接表表示<br /> <br />方法是dfs<br /> <br />#include<stdio.h>#include<string.h>const int MAXN = 1000;struct edge{ int u, v, next;}e[MAXN];int n;int first[MAXN], cnt;bool visit[MAXN], f;int sort[MAXN], top;void dfs(int s){ if(v原创 2011-04-30 06:34:00 · 280 阅读 · 0 评论 -
poj 1135 Domino Effect
留下代码有空写解题报告 蛋疼的题目#includeconst int MAXN = 501;const int INF = 0x3f3f3f3f;int n, m;int map[MAXN][MAXN], dist[MAXN];bool used[MAXN];void dijkstra(){ for(int i = 1; i dist[j]) min = dist[minidx = j]; //这种写法不错 简洁 也易懂 } used[minidx] =原创 2011-04-30 05:39:00 · 311 阅读 · 0 评论 -
poj 1502 MPI Maelstrom
图 邻接矩阵 表示朴素的dijkstra AC另外 c语言提供几个有用的函数 好好利用itoa() 将整型值转换为字符串itoa() 将长整型值转换为字符串ultoa() 将无符号长整型值转换为字符串atoi() 将字符串转成整型#include #include #include const int MAXN = 101;const int MAXINT = 32767;int G[MAXN][MAXN];bool used[MAXN];int pre[MAXN];int原创 2011-04-30 02:40:00 · 363 阅读 · 0 评论 -
poj 2387 Til the Cows Come Home
<br />裸的最短路<br />spfa 水过<br />#include<stdio.h>#include<string.h>#include<queue>#define INF 0x3f3f3f3f#define MAXN 10001using namespace std;struct edge{ int u, v, w, next;}e[MAXN];int first[MAXN], dist[MAXN], ecnt;bool inq[MAXN];int t原创 2011-05-03 21:24:00 · 311 阅读 · 0 评论