POJ 1847
Posted huluxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1847相关的知识,希望对你有一定的参考价值。
1 #include <cstdio> 2 #include <cmath> 3 #include <cstring> 4 #include <algorithm> 5 #include <queue> 6 #include <stack> 7 #include <vector> 8 #include <iomanip> 9 using namespace std; 10 int n,s,t,d[150]; 11 vector<pair<int,int> >e[150]; 12 int main(int argc, char *argv[]) 13 { 14 scanf("%d%d%d",&n,&s,&t); 15 for(int i=1;i<=n;i++) 16 { 17 int m; 18 scanf("%d",&m); 19 for(int j=0;j<m;j++) 20 { 21 int k; 22 scanf("%d",&k); 23 if(j!=0) 24 e[i].push_back(make_pair(k,1)); 25 else 26 e[i].push_back(make_pair(k,0)); 27 } 28 } 29 memset(d,0x3f3f3f3f,sizeof(d)); 30 d[s]=0; 31 priority_queue<pair<int,int> >q; 32 q.push(make_pair(-d[s],s)); 33 while(!q.empty()) 34 { 35 int now=q.top().second;q.pop(); 36 for(int i=0;i<e[now].size();i++) 37 { 38 int v=e[now][i].first; 39 if(d[v]>d[now]+e[now][i].second) 40 { 41 d[v]=d[now]+e[now][i].second; 42 q.push(make_pair(-d[v],v)); 43 } 44 45 } 46 } 47 if(d[t]==0x3f3f3f3f) 48 printf("-1 "); 49 else 50 printf("%d ",d[t]); 51 return 0; 52 }
以上是关于POJ 1847的主要内容,如果未能解决你的问题,请参考以下文章