设为首页 加入收藏

TOP

HDU 1181 变形课
2015-07-20 17:38:25 来源: 作者: 【 】 浏览:3
Tags:HDU 1181 变形

多种解法,水题。

DFS,BFS,并查集,最短路。

只要B开头能到M结尾。


我建立的最短路模型,然后SPFA。。花式AC。。


#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
        #include
        
          #include
         
           #include
          
            #include
           
             #include
            
              #include
             
               #define INF 0x7fffffff #define eps 1e-8 #define LL long long #define PI 3.141592654 #define CLR(a,b) memset(a,b,sizeof(a)) #define FOR(i,a,n) for(int i= a;i< n ;i++) #define debug puts("==fuck==") #define acfun std::ios::sync_with_stdio(false) #define SIZE 20+10 using namespace std; struct lx { int v,len; void init(int vv,int ll) { v=vv,len=ll; } }; vector
              
               g[27]; void SPFA() { int dis[27]; bool vis[27]; FOR(i,0,26) { dis[i]=INF; vis[i]=0; } dis[1]=0,vis[1]=1; queue
               
                q; q.push(1); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=0; FOR(j,0,g[u].size()) { int v=g[u][j].v; int len=g[u][j].len; if(dis[v]>dis[u]+len) { dis[v]=dis[u]+len; if(!vis[v]) { vis[v]=1; q.push(v); } } } } if(dis[12]==INF) puts("No."); else puts("Yes."); } int main() { char str[101]; while(~scanf("%s",str)) { if(str[0]=='0') { SPFA(); FOR(i,0,26) g[i].clear(); continue; } else { int len=strlen(str)-1; lx now; now.init(str[len]-'a',1); g[str[0]-'a'].push_back(now); } } } 
               
              
             
            
           
          
         
        
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出1到N之间所有相加等于M的数字.. 下一篇HDU - 5023 A Corrupt Mayor'..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·「链表」是一种怎样 (2025-12-25 19:20:51)
·C 语言中的链表有哪 (2025-12-25 19:20:48)
·c语言中的链表怎么学 (2025-12-25 19:20:45)
·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)