hdu1546-Idiomatic Phrases Gamehttp
来源:互联网 发布:成都蜀美网络 编辑:程序博客网 时间:2024/05/21 08:36
http://acm.hdu.edu.cn/showproblem.php?pid=1546
Dijkstra求解最短路,但是题意中规定当某一字符串的首尾字符相同时才能连接,但是使用如下的方法,这个条件就被忽略了(暗含已经判断了);
题意大致为给定一个整数 和一串字符串,当字符串末端的四个字符与另一字符串的首端四个字符相同时,加上前面的字符串,然后找出连接状态的最小值,而且每一个符合条件的字符串的首尾字符必须相同,才能相加;
将题目转换成求解最短路,然后处理一下对于字符串和对应的整数的关系就可以求出来了
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std ; const int INF = 1000000000 ;const int maxn = 1005 ;int edge[ maxn ][ maxn ] ;int path[ maxn ] ; int dist[ maxn ] ;int used[ maxn ] ;int n ;int temp[ maxn ] ;char str[ maxn ][ maxn ] ;void Dijkstra( int v0 ){int i , j , k ; memset( used , 0 , sizeof( used ) ) ;for( i = 0 ; i < n ; i++ ){dist[ i ] = INF ;}dist[ 0 ] = 0 ;for( i = 0 ; i < n ; i++){int MIN = INF , u = v0 ;for( j = 0 ; j < n ; j++ ){if( !used[ j ] && dist[ j ] < MIN ){MIN = dist[ j ] ;u = j ;}}used[ u ] = 1; for( k = 0 ; k < n ; k++ ){if( edge[ u ][ k ] != -1 && (edge[ u ][ k ] + dist[ u ] < dist[ k ] )){dist[ k ] = dist[ u ] + edge[ u ][ k ] ;path[ k ] = u ;}}}}int main(){int i , j , k ;while( scanf( "%d" , &n ) != EOF && n ){memset( temp , 0 , sizeof( temp ) ) ;memset( str , 0 , sizeof( str ) ) ;for( i = 0 ; i < n ; i++ )scanf( "%d%s" , &temp[ i ] , str[ i ] ) ;memset( edge , -1 ,sizeof( edge ) ) ;for( i = 0 ; i < n ; i++ ){for( j = 0 ; j < n ; j++ ){if( i == j )continue ;int len = strlen( str[ i ] ) ;for( k = 0 ; k < 4 ; k++ ){if( str[ i ][ len - 4 + k ] != str[ j ][ k ] )break; }if( k == 4 )edge[ i ][ j ] = temp[ i ] ;}}Dijkstra( 0 ) ; if( dist[ n - 1 ] == INF )printf( "-1\n" ) ;elseprintf( "%d\n" ,dist[ n - 1 ] ) ;}}
- hdu1546-Idiomatic Phrases Gamehttp
- HDU1546:Idiomatic Phrases Game(Dijkstra)
- HDU1546:Idiomatic Phrases Game(Dijkstra)
- hdu1546-Idiomatic Phrases Game 简单dijkstra
- hdu1546 zoj 2750 Idiomatic Phrases Game (dijkstra)
- hdu1546——Idiomatic Phrases Game
- HDU1546-Idiomatic Phrases Game(SPFA)
- hdu1546—Idiomatic Phrases Game(spfa)
- HDU1546 Idiomatic Phrases Game 最短路径(Dijkstra算法)
- zoj2750-Idiomatic Phrases Game
- Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- HDOJ 1546 Idiomatic Phrases Game
- HDU 1546 Idiomatic Phrases Game
- hdu 1546 Idiomatic Phrases Game
- ZOJ-2750- Idiomatic Phrases Game
- ZOJ 2750 Idiomatic Phrases Game
- zend studio小技巧
- Hdu 1542 Atlantis 线段树 求矩形面积并
- Git详解之四 服务器上的Git
- 数据库并发控制几只——事务
- Android Studio 在 win7 下的安装
- hdu1546-Idiomatic Phrases Gamehttp
- 安卓推送
- PHP正则表达式
- android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)
- Sql Server高手必备
- event.keyCode的应用---表单按键的处理
- eclipse中相同变量高亮显示
- sgVar – a json parser/generator and var lib for c++
- Git详解之五 分布式Git