| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
数据貌似int cal(int l) { for(int i = 0; i < n; ++i) father[i] = i; int i = l; int block_num = n; while(i < m && block_num > 1) { int a = getanc(edge[i].a); int b = getanc(edge[i].b); if(a != b) { block_num--; father[a] = b; } i++; } if(block_num > 1) return -1; return edge[i-1].w - edge[l].w; } void work() { int ans = cal(0); if(ans == -1) { printf("-1\n"); return; } for(int i = 1; i < m; ++i) { if(edge[i].w == edge[i-1].w) continue; int temp = cal(i); if(temp == -1) break; ans = min(ans, temp); } printf("%d\n", ans); } int main() { while(scanf("%d%d", &n, &m), n|m) { mem(edge, 0); input(); sort(edge, edge+m); work(); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator