首页 > 代码库 > hdu 1598 find the most comfortable road
hdu 1598 find the most comfortable road
http://acm.hdu.edu.cn/showproblem.php?pid=1598
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 2000 5 using namespace std; 6 const int inf=1<<30; 7 8 int f[maxn],n,m,q,a,b; 9 struct node 10 { 11 int u,v,w; 12 bool operator < (const node &a)const 13 { 14 return w<a.w; 15 } 16 }p[maxn]; 17 18 void inti() 19 { 20 for(int i=1; i<=n; i++) 21 { 22 f[i]=i; 23 } 24 } 25 26 int find1(int x) 27 { 28 if(x==f[x]) return x; 29 return f[x]=find1(f[x]); 30 } 31 32 void union1(int a,int b) 33 { 34 int fa=find1(a); 35 int fb=find1(b); 36 if(fa!=fb) 37 { 38 f[fa]=fb; 39 } 40 } 41 42 int main() 43 { 44 while(scanf("%d%d",&n,&m)!=EOF) 45 { 46 for(int i=0; i<m; i++) 47 { 48 scanf("%d%d%d",&p[i].u,&p[i].v,&p[i].w); 49 } 50 sort(p,p+m); 51 scanf("%d",&q); 52 while(q--) 53 { 54 scanf("%d%d",&a,&b); 55 int min1=inf; 56 int j; 57 for(int i=0; i<m; i++) 58 { 59 inti(); 60 for(j=i; j<m; j++) 61 { 62 union1(p[j].u,p[j].v); 63 if(find1(a)==find1(b)) 64 { 65 min1=min(min1,p[j].w-p[i].w); 66 break; 67 } 68 } 69 if(j==m) break; 70 } 71 if(min1==inf) printf("-1\n"); 72 else 73 printf("%d\n",min1); 74 } 75 } 76 return 0; 77 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。