锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品国产第一综合99久久,精品久久久久久久久午夜福利,99热成人精品免费久久http://m.shnenglu.com/AmazingCaddy/category/13279.htmlzh-cnWed, 17 Mar 2010 08:05:39 GMTWed, 17 Mar 2010 08:05:39 GMT60poj 3026 BFS+MSThttp://m.shnenglu.com/AmazingCaddy/archive/2010/03/16/109855.htmlAmazingCaddyAmazingCaddyTue, 16 Mar 2010 14:47:00 GMThttp://m.shnenglu.com/AmazingCaddy/archive/2010/03/16/109855.htmlhttp://m.shnenglu.com/AmazingCaddy/comments/109855.htmlhttp://m.shnenglu.com/AmazingCaddy/archive/2010/03/16/109855.html#Feedback0http://m.shnenglu.com/AmazingCaddy/comments/commentRss/109855.htmlhttp://m.shnenglu.com/AmazingCaddy/services/trackbacks/109855.htmlhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3026

 榪欓亾棰樼殑杈撳叆鏁版嵁鍙婂叾鐚ョ悙錛屾湁寰堝鏃犵敤鐨勭┖鏍箋傘傘?br>鍏朵粬榪樻槸娌′粈涔堢殑錛屽彧瑕丅FS澶勭悊涓嬩袱鐐歸棿鐨勮窛紱伙紝鐒跺悗MST涓涓嬨傘傘?br>
// 3026 Borg Maze
// Time Limit: 1000MS        Memory Limit: 65536K
// Total Submissions: 2827        Accepted: 888

#include
<iostream>
#include
<queue>
#define MAXN 105
#define N 55
#define INF 10000000
using namespace std;
struct node
{
    
int x,y;
    
int step;
}
;
int dir[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
char maze[N][N];
bool vis[N][N];
int g[MAXN][MAXN],v[N][N];
node d[MAXN];
int n,m,cnt;
void BFS( node a )
{
    
int i,x,y,nx,ny,step;
    node p;
    queue
<node> que;
    memset( vis, 
falsesizeof(vis) );
    que.push( a );
    vis[a.x][a.y]
=true;
    
while!que.empty( ) )
    
{
        p
=que.front( );
        que.pop( );
        x
=p.x,y=p.y,step=p.step+1;
        
for( i=0; i<4; i++ )
        
{
            nx
=x+dir[i][0],ny=y+dir[i][1];
            
if( nx<&& nx>=0 && ny<&& ny>=0 && !vis[nx][ny])
            
{
                
if( maze[nx][ny]=='S' || maze[nx][ny]=='A' )
                
{
                    g[v[a.x][a.y]][v[nx][ny]]
=g[v[nx][ny]][v[a.x][a.y]]=step;
                    p.x
=nx,p.y=ny,p.step=step;
                    que.push( p );
                    vis[nx][ny]
=true;
                }

                
if( maze[nx][ny]==' ' )
                
{
                    p.x
=nx,p.y=ny,p.step=step;
                    que.push( p );
                    vis[nx][ny]
=true;
                }

            }

        }

    }

}


void create_graph( )
{
    
int i,j;
    
for( i=0; i<m; i++ )
        gets( maze[i] );
    cnt
=0;
    
for( i=0; i<m; i++ )
        
for( j=0; j<n; j++ )
            
if( maze[i][j]=='A' || maze[i][j]=='S' )
                d[cnt].x
=i,d[cnt].y=j,d[cnt].step=0,v[i][j]=cnt++;
    
for( i=0; i<cnt; i++ )
        
for( g[i][i]=0, j=i+1; j<cnt; j++ )
            g[i][j]
=g[j][i]=INF;
    
for( i=0; i<cnt; i++ )
        BFS( d[i] );
}


int prim( )
{
    
int i,j,k,min,ans;
    
int dis[MAXN];
    
for( i=0; i<cnt; i++ )
        dis[i]
=g[0][i];
    ans
=0;
    
for( i=1; i<cnt; i++ )
    
{
        min
=INF,k=-1;
        
for( j=0; j<cnt; j++ )
            
if( dis[j] && dis[j]<min )
                min
=dis[j],k=j;
        ans
+=min;
        dis[k]
=0;
        
for( j=0; j<cnt; j++ )
            
if( dis[j] && g[k][j]<dis[j] )
                dis[j]
=g[k][j];
    }

    
return ans;
}


int main( )
{
    
int ans,t;
    
char c[100];
    scanf(
"%d",&t);
    
while( t-- )
    
{
        scanf(
"%d%d",&n,&m);
        gets( c );
        create_graph( );
        ans
=prim( );
        printf(
"%d\n",ans);
    }

    
return 0;
}


]]>
99久久国产精品免费一区二区| 亚洲AV日韩精品久久久久| 久久午夜伦鲁片免费无码| 亚洲va国产va天堂va久久| 97久久天天综合色天天综合色hd| AV狠狠色丁香婷婷综合久久| 激情综合色综合久久综合| 亚洲国产成人久久一区WWW| 久久精品麻豆日日躁夜夜躁| 国内精品久久久久影院网站| 狠狠色噜噜色狠狠狠综合久久 | 国产农村妇女毛片精品久久| 久久毛片免费看一区二区三区| 久久综合久久自在自线精品自| 国内精品久久久久久中文字幕| 奇米影视7777久久精品| 久久亚洲AV永久无码精品| 久久精品国产亚洲av高清漫画| 久久久久久毛片免费看| 国产精品久久网| 7777精品久久久大香线蕉| 欧美性猛交xxxx免费看久久久| 午夜不卡久久精品无码免费| 久久久久人妻精品一区三寸蜜桃| 国产精品久久99| 奇米影视7777久久精品人人爽| 国产999精品久久久久久| 久久99精品久久久久婷婷| 久久精品卫校国产小美女| 亚洲精品tv久久久久| 国内精品久久久久影院网站 | 久久久久久精品久久久久| 久久久久久A亚洲欧洲AV冫| 久久久久久综合一区中文字幕| 亚洲午夜久久久久妓女影院| 久久综合久久美利坚合众国| 国产精品久久久久久久久软件| 少妇被又大又粗又爽毛片久久黑人| 久久精品国产亚洲AV不卡| 精品国产乱码久久久久久浪潮| 国产香蕉97碰碰久久人人|