hdu3078
求路径中权重最小的点
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
#define N 80010int vis[N],mark[N],first[N],ver[N*2];
int val[N];
int dis[N];
int deep[N*2];
int _pow[30];
int par[N];
int ans[N];
int dp[2*N][25];
vectormp[N];
int n,m;
int tot;
int cnt;void init (){for(int i=1;i<=n;i++){mp[i].clear();}for(int i=0;i<25;i++)_pow[i]=(1< y) swap(x,y);int res = RMQ(x,y);return ver[res];
}void findpar(int u,int fa){//printf("%d fa=%d\n",u,fa);while(u!=fa){ans[cnt++]=dis[u];u=par[u];}ans[cnt++]=dis[fa];
}bool cmp(int x,int y){return x>y;
}int main(){scanf("%d%d",&n,&m);init();for(int i=1;i<=n;i++)scanf("%d",&dis[i]);for(int i=1;icnt){printf("invalid request!\n");}else{sort(ans,ans+cnt,cmp);printf("%d\n",ans[t-1]);}}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
