LeeBlog

导航

随笔分类 - 

HDU 1596 find the safest road
摘要:这题就是一最短路,不过,在这里是找"最长路",所以在初始化时不能赋值为0x7fffffff,而赋为0,还有存贮是记得用double型#include<stdio.h>int n,q,des[1005],s,e;double map[1005][1005],dis[1005];double Dij( ){ for( int i = 0; i <= n; ++i ) des[i] = 0,dis[i] = 0; dis[s] = 1; for( int i = 1; i <= n; ++i ) { int pos = -1; double max = - 阅读全文

posted @ 2011-05-03 07:52 LeeBlog 阅读(230) 评论(0) 推荐(0)

HDU 1233 还是畅通工程
摘要:这题是一个最小生成树,用kustra做,在给结构体排序时要用快排,不能冒泡,否则超时,这里有我冒泡的代码,你可以提交试试#include<stdio.h>#include<stdlib.h>int set[105],n,m,sum;struct e{ int x,y,v;}val[10000];int cmp( const void *a,const void *b ){ return ( ( e * )a )-> v - ( ( e * )b ) ->v;}int find( int x ){ return x == set[x] ? x : set[x] 阅读全文

posted @ 2011-05-02 13:35 LeeBlog 阅读(184) 评论(0) 推荐(0)

HDU 1879 继续畅通工程
摘要:跟畅通工程差不多,我的代码就在那上面改的#include<stdio.h>#include<stdlib.h>struct e{ int x,y,v;}val[10500];int n,m,set[105],sum;int cmp( const void *a,const void *b ){ return ( ( e * )a ) -> v - ( ( e * )b ) -> v;}int find( int i ){ return i == set[i] ? i :set[i] = find( set[i] );}void Kustra( ){ for( 阅读全文

posted @ 2011-04-30 09:02 LeeBlog 阅读(158) 评论(0) 推荐(0)

HDU 1272 小希的迷宫
摘要:这题数据真是恶心,开始敲出来了,一直WA,后来重敲一遍还是WA,最后看小白的代码才知道,还有( 0 0 ) 这种恶心的数据#include<stdio.h>#include<string.h>int set[100005],des[100005],f;int find( int x ){ return set[x] == x ? x : set[x] = find( set[x] );}void merge( int x,int y ){ int a = find( x ),b = find( y ); if( a != b ) set[a] = b; else if( 阅读全文

posted @ 2011-04-29 22:34 LeeBlog 阅读(207) 评论(0) 推荐(0)

HDU 3786 找出直系亲属 floyd
摘要:这题好悲剧啊,我用floyd做一直不能过,迷惑了我一晚上,改了N个地方还是wa,最后看着大牛代码改终于发现,floyd关系弄错了#include<stdio.h>int map[26][26];void floyd( ){ for( int i = 0; i < 26; ++i ) for( int j = 0 ; j < 26; ++j ) for( int k = 0; k < 26; ++k ) if( map[j][i] && map[i][k] ) map[j][k] = map[j][i] + map[i][k];//wa所在地 }vo 阅读全文

posted @ 2011-03-23 00:51 LeeBlog 阅读(321) 评论(0) 推荐(0)

hdu 3790 最短路径问题
摘要:今天的这题有点悲剧,错就错在一个地方,在输入距离的时候,我把花费也考虑进去了,结果一只wa,没办法,看了大牛的代码才知道只要考虑距离;#include<stdio.h>int n,m,s,t;int inf = 0x7fffffff,des[1024],dis[1024],map[1024][1024];int co[1024],cost[1024][1024];void Dijkstra( ){ for( int i = 1; i <= n; ++i ) { dis[i] = co[i] = inf; des[i] = 0; } dis[s] = co[s] = 0; f 阅读全文

posted @ 2011-03-21 14:00 LeeBlog 阅读(615) 评论(0) 推荐(0)

hdu 2680 Choose the best route
摘要:#include<stdio.h>int map[1024][1024],des[1024],dis[1024],s,w;int m,n,inf = 0x7fffffff,q;int Dijkstra( ){ dis[0] = 0; for( int i = 0; i <= n; ++i ) { int min = inf,t = 0,pos = -1; for( int j = 0; j <= n; ++j ) { if( !des[j] ) if( dis[j] < min ) { min = dis[j]; pos = j; } } des[pos] = 1 阅读全文

posted @ 2011-03-09 20:11 LeeBlog 阅读(169) 评论(0) 推荐(0)

hdu 1142 A Walk Through the Forest
摘要:#include<stdio.h>#include<stdlib.h>int m,n,map[1024][1024],des[1024],dis[1024],dep[1024];int inf = 0x7fffffff;int Dijkstra( int p ){ dis[p] = 0; for( int i = 1; i <= n; ++i ) { int min = inf, pos = 0,t; for( int j = 1; j <= n; ++j ) { if( !des[j] ) if( dis[j] < min ) { min = dis 阅读全文

posted @ 2011-03-08 20:51 LeeBlog 阅读(238) 评论(0) 推荐(0)

hdu 1874 畅通工程续
摘要:#include<stdio.h>#include<math.h>#include<stdlib.h>struct E{ int x,y,set;}e[124];struct val{ int a,b; double dis;}va[10000];int t,c,count;int cmp( const void *a,const void *b ){ return ((val *)a)->dis > ((val *)b)->dis ? 1 : -1;}int find( int i ){ return e[i].set == i ? i 阅读全文

posted @ 2011-03-08 17:19 LeeBlog 阅读(186) 评论(0) 推荐(0)

hdu 2112 HDU Today
摘要:这题真恼火,写完代码后自己测试都能过,就是wa,于是我把代码重新敲了一遍,没想到还是wa,最后只能去找大牛的代码,大牛都是用字典树做的,显然与我的不符,最后在自己的代码上改,终于改到一个地方,在初始化的时候全部从0开始初始化,果断水过#include<stdio.h>#include<string.h>char word[160][300] = {0},a[300],b[300],start[300],end[300],p,q;int map[160][160],c,des[160],dis[160],n;int inf = 0x7fffffff;int obtain( 阅读全文

posted @ 2011-03-07 15:30 LeeBlog 阅读(199) 评论(0) 推荐(0)

hdu 2066 一个人的旅行
摘要:#include<stdio.h>int inf = 0x7fffffff;int map[1024][1024],des[1024],dis[1024],s,max,t,d,a[1024],b[1024];int Dijkstra( ){ ++max; for( int i = 1; i <= d; ++i ) map[b[i]][max] = map[max][b[i]] = 0; dis[0] = 0; for( int i = 0; i <= max; ++i ) { int min = inf,pos = -1,t; for( int j = 0; j < 阅读全文

posted @ 2011-03-07 11:09 LeeBlog 阅读(244) 评论(0) 推荐(0)

HDU 2544 最短路
摘要:#include<stdio.h>int inf = 0x7fffffff;int map[110][110],des[110],dis[110],n,m;//dis[i]表示i点到原点的距离void dij( )//des作为标记符{ dis[1] = 0; for( int i = 1; i <= n; ++i ) { int min = inf,pos = 0; for( int j = 1; j <= n; ++j )//找到当前未标记的权值最小的点 if( !des[j] && dis[j] < min ) { min = dis[ j 阅读全文

posted @ 2011-03-05 14:32 LeeBlog 阅读(191) 评论(0) 推荐(0)

hdu 1102 Constructing Roads
摘要:此题是最小生成树的基础题#include<stdio.h>#include<string.h>#include<stdlib.h>int set[124],n,t,a,b,c;long long min;struct map{ int x,y,val;}m[ 100000 ];int cmp( const void *a,const void *b ){ return ( ( map * ) a ) -> val - ( ( map * ) b ) -> val;}int find( int i ){ return set[ i ] == i ? 阅读全文

posted @ 2011-03-02 19:48 LeeBlog 阅读(163) 评论(0) 推荐(0)

hdu 1181 变形课
摘要:#include<stdio.h>#include<stdlib.h>#include<string.h>int len,map[26][ 26 ],des[26],a,b,f = 0,m;char ch[1000];void DFS( int n ){ if( f ) return ; if( n == 'm' - 'a' ) { f = 1; return; } for( int i = 0; i < 26 ; ++i ) { if( n != i && map[n][i] == 1 ) { if( 阅读全文

posted @ 2011-03-01 22:40 LeeBlog 阅读(208) 评论(0) 推荐(0)

hdu 1875 畅通工程再续
摘要:这是我第二次敲这个题,没想到果断悲剧了,最后只能翻出以前的代码,没想到是qsort出问题了,以后qsort全部用问号表达式,不再用a-b了.#include<stdio.h>#include<math.h>#include<stdlib.h>int set[105],t,c,m;double sum = 0;struct e{ int x,y; double v;}val[10000];struct coor{ int x,y;}co[105];int cmp( const void *a,const void *b ){ return ((e *)a) - 阅读全文

posted @ 2011-02-27 19:45 LeeBlog 阅读(367) 评论(0) 推荐(0)

hdu 1856 More is better
摘要:这题分为四个步骤 压缩,合并完全,压缩查找最大集合include<stdio.h>int set[10000000],count[10000000];int find( int x ){ return set[ x ] == x ? x : set[ x ] = find( set[ x ] );} void merge( int x,int y ){ int a = find( x ),b = find( y ); set[ a ] = b; }int main( ){ int n,i,a,b; while( scanf( "%d",&n ) !=EO 阅读全文

posted @ 2011-02-26 09:55 LeeBlog 阅读(160) 评论(0) 推荐(0)

hdu 1213 How Many Tables
摘要:并查集基础#include<stdio.h>int set[100000];int find( int i ){ return set[ i ] == i ? i : set[ i ] = find( set[ i ] );//路径压缩}//查找跟结点void merge( int x,int y ){ int a = find( x ), b = find( y ); if( a != b ) set[ a ] = b;//合并 }int main( ){ int T,n,m,a,b; scanf( "%d",&T ); while( T-- ) { 阅读全文

posted @ 2011-02-26 09:48 LeeBlog 阅读(141) 评论(0) 推荐(0)

hdu 1232 畅通工程
摘要:这题就是把所有的村庄看它们是否畅通来分成n个集合,然后只要修建 n - 1 条道路就可以把他们连起来了#include<stdio.h>int set[ 1024 ];int find( int i ){ return set[ i ] == i ? i : set[ i ] = find( set[ i ] );}void merge( int x, int y ){ int a = find( x ),b = find( y ); set[ a ] = b; }int main( ){ int n,m,a,b; while( scanf( "%d",& 阅读全文

posted @ 2011-02-26 09:39 LeeBlog 阅读(167) 评论(0) 推荐(0)

hdu 1863 畅通工程
摘要:这题是刚学最小生成树的一入门题,其实就是求最小生成树,用结构体定义这棵树,到时候便于权值排序,输入后进行排序,让后再讲这些顶点连成一个集合,并在这过程中把各权值相加(因为这些权值已按递增排列,所以得出的集合时权值最小的),至于是否能保证畅通则只要看有几个根结点就可以了#include<stdio.h>#include<stdlib.h>#include<string.h>int set[1000],n,m,x,y,val;struct Ed{ int x,y,val; }e[10000];int cmp( const void *a,const void * 阅读全文

posted @ 2011-02-26 09:34 LeeBlog 阅读(221) 评论(0) 推荐(0)