摘要: 题目链接最短路,直接dijkstra水之,注意重边。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define MIN(a,b) ((a)<(b)?(a):(b)) 4 #define N 1000 5 #define INF 100000 6 int g[N][N],dist[N],n,m; 7 char vis[N]; 8 void dijkstra() 9 {10 int i,v,k,min;11 memset(vis,0,sizeof(vis));12 for(i=0;i<n;i++) 阅读全文
posted @ 2012-04-22 17:21 BeatLJ 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路的题,这题时间限制较严,第一次用dijkstra果断挂掉,后来改用SPFA写,由于我用的数据结构是动态链表,所以还是TLE,改为静态链表后就AC了。在这个过程中还贡献了一次WA,因为最后结果用32位会溢出,题中说的总价格不会超过1000000000是单个最短路不会超,而最后的结果是n-1个结点的最短路之和。View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <memory.h> 4 #define INF 1000000001 5 #define N 1000001 6 阅读全文
posted @ 2012-04-22 16:13 BeatLJ 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路的题,直接用dijkstra即可。此题比较有技巧性的地方在数据读入的处理,题中给出的是邻接矩阵的下三角,其中不直接邻接的边用字符x表示,其他地方用整数表示边长。具体做法见代码(参考了discuss)。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define MIN(a,b) ((a)<(b)?(a):(b)) 4 #define MAX(a,b) ((a)>(b)?(a):(b)) 5 #define N 101 6 #define INF 0x7ffffff 7 int g[ 阅读全文
posted @ 2012-04-22 14:09 BeatLJ 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路的题,与一般的最短路不同的是,建图后每个结点有一个等级值(一个非负整数),要求最短路并且路线上的结点的最大等级差不超过给定值。这题一开始我想到的就是枚举等级区间,在对应区间内用dijkstra求最短路,复杂度是L*N2,L是给定的最大等级差,N为结点数,由于题中L的最大值没有给出,所以我担心会超时,写好后提交是WA而不是TLE,这也让我确定了此法的可行性。经检查发现导致WA的错误:1.建图错误,按题意应建有限图;2.有一个两重循环的下标重复了;3.松弛的时候忘了检查结点等级。View Code 1 #include <stdio.h> 2 #include <s 阅读全文
posted @ 2012-04-22 13:40 BeatLJ 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目链接并查集的题,食物链模型。题目大意:已知关于n个数的m条信息,信息有两类,一类是已知Ai比Aj大K,另一类是已知Ai为K,问是否能从这m条信息中唯一确定这n个数,或者能推出矛盾。View Code 1 #include <stdio.h> 2 #define N 10001 3 #define M 20001 4 int p[N],c[N],v[N]; 5 int a[M],b[M],cnt; 6 char vis[N]; 7 int n,m; 8 void make_set() 9 {10 int i;11 for(i=0;i<n;i++) p[i]=i,c[i... 阅读全文
posted @ 2012-04-22 10:09 BeatLJ 阅读(326) 评论(0) 推荐(0) 编辑