栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3033 Board Games

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3033 Board Games

#include <stdio.h>  #include <iostream>  #include <string.h>  #include <string>  #include <limits.h>  #include <algorithm>  #include <math.h>  #include <numeric>  #include <functional>  #include <ctype.h>  #include <vector>  #include <stack>  #define MAX 100010  using namespace std;  struct NODE  {      int v;      long long w;  };  vector<NODE> edge[MAX];  stack<int> stk;  int n,ncase,m;  int beg,end;  int visit[MAX],in_stk[MAX];  long long dist[MAX];  int spfa()  {      memset(visit,0,sizeof(visit));      memset(in_stk,0,sizeof(in_stk));      for(int i=0;i<n;++i)          dist[i]= ((long long)(1))<<61;      while(!stk.empty())          stk.pop();      stk.push(beg);      in_stk[beg]=1;      dist[beg]=0;      while(!stk.empty())      {          int u=stk.top();          stk.pop();          if(++visit[u]>n)   return 0;          in_stk[u]=0;          for(size_t i=0;i<edge[u].size();++i)          {   int v=edge[u][i].v;   long long w=edge[u][i].w;   if(dist[v]-dist[u]>w)   {       dist[v]=dist[u]+w;       if(!in_stk[v])       {stk.push(v);in_stk[v]=1;       }   }          }      }      return 1;  }  int main(void)  {        scanf("%d",&ncase);      int u;      while(ncase--)      {          scanf("%d",&n);          scanf("%d%d",&beg,&end);          scanf("%d",&m);          for(int i=0;i<n;++i)   edge[i].clear();          NODE nd_tmp;          while(m--)          {   scanf("%d%d%lld",&u,&nd_tmp.v,&nd_tmp.w);   edge[u].push_back(nd_tmp);          }          int ans=spfa();          if(dist[end]== ((long long)(1))<<61 || !ans)   printf("infinityn");          else   printf("%dn",dist[end]);      }      return 0;  }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号