hdu 1598 find the most comfortable road
2011-11-23 23:43
246 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1598
才开始是我看着没什么思路,心想就用dfs暴搜试试吧(本人太爱dfs了)。结果加了各种剪枝都都是TLE无语。。最后听von说用并查集,给我讲了讲才明白,不过开始的时候把边的最大值开成点的最大值了贡献了4次wa才检查出来。。无语了,自己太马虎了。。
思路:先将各个边按限速排序,然后从最大的开始里循环用并查集建树,直到起点与终点的父亲相同说明此事s与e已经建立联系,然后用开始循环的节点的速度(该路线上的最大速速)减去最后将s,e连接的边的速度就是该路径上的Vmax-Vmin的最小了。。
才开始是我看着没什么思路,心想就用dfs暴搜试试吧(本人太爱dfs了)。结果加了各种剪枝都都是TLE无语。。最后听von说用并查集,给我讲了讲才明白,不过开始的时候把边的最大值开成点的最大值了贡献了4次wa才检查出来。。无语了,自己太马虎了。。
思路:先将各个边按限速排序,然后从最大的开始里循环用并查集建树,直到起点与终点的父亲相同说明此事s与e已经建立联系,然后用开始循环的节点的速度(该路线上的最大速速)减去最后将s,e连接的边的速度就是该路径上的Vmax-Vmin的最小了。。
#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; const int max_s = 1007; int f[207]; struct node { int a,b,w; }p[max_s]; int n; int cmp(const void *a,const void *b) { return (*(node*)b).w-(*(node*)a).w; } void init() { for(int i=0;i<=n;i++) f[i]=i; } int find(int a) { if(f[a]!=a) f[a]=find(f[a]); return f[a]; } void Union(int a,int b) { int x=find(a); int y=find(b); if(x!=y) f[y]=x; } int main() { //freopen("d.txt","r",stdin); int m,i,j,op; while(~scanf("%d%d",&n,&m)) { for(i=0;i<m;i++) scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].w); qsort(p,m,sizeof(p[0]),cmp); scanf("%d",&op); while(op--) { int s,e; scanf("%d%d",&s,&e); int min=9999999; for(i=0;i<m;i++) { init(); for(j=i;j<m;j++) { Union(p[j].a,p[j].b); if(find(s)==find(e)) { if(min>p[i].w-p[j].w) min=p[i].w-p[j].w; break; } } } if(min!=9999999) printf("%d\n",min); else printf("-1\n"); } } return 0; }
相关文章推荐
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road 并查集+贪心
- hdu 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- AYIT2017暑假集训第二周周三赛 E - find the most comfortable road HDU - 1598
- hdu 1598 find the most comfortable road
- HDU 1598--find the most comfortable road【并查集 + 枚举】
- hdu 1598 find the most comfortable road 举+最小生成树★★
- HDU 1598 find the most comfortable road 【暴力枚举 + 并查集】
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- HDU 1598 find the most comfortable road (最小生成树)
- HDU-1598-find the most comfortable road(暴力枚举+Kruskal最小生成树)
- hdu 1598 find the most comfortable road
- find the most comfortable road HDU - 1598
- HDU-1598 find the most comfortable road
- hdu 1598 find the most comfortable road(并查集+枚举)
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road (并查集+枚举)