当前位置: 首页>>代码示例>>C++>>正文


C++ priority_queue::top方法代码示例

本文整理汇总了C++中priority_queue::top方法的典型用法代码示例。如果您正苦于以下问题:C++ priority_queue::top方法的具体用法?C++ priority_queue::top怎么用?C++ priority_queue::top使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在priority_queue的用法示例。


在下文中一共展示了priority_queue::top方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: TransportSystem

// Ksruskal's main funtion
int TransportSystem(double& r_cost, double& rr_cost, int r, int n)
{		
	//int r_cost = 0, rr_cost = 0;
	int states = 1;
	InitSet(n); // initially all vertices in disjoint set

	while (!edgeList.empty()) {
		pair<double, ii> front = edgeList.top();
		edgeList.pop();

		if (!IsSameSet(front.second.first, front.second.second)) { // if no cycle, in the disjoint set
			//mst_cost += (-front.first);
			if (-front.first <= r)
				r_cost += (-front.first);
			else if (-front.first > r) {
				rr_cost += (-front.first);
				states++;
			}

			UnionSet(front.second.first, front.second.second);
		}
	}
	return states;
}
开发者ID:MayankSrivastav,项目名称:Algorithms,代码行数:25,代码来源:Uva11228.cpp

示例2: main

int main()
{
    int n,x=0,m;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&m);
		q.push(m);
	}
	int ans=0;
	for(int i=1;i<=n-1;i++)
	{ 
		int b,c;
		b=q.top();q.pop();
		c=q.top();q.pop();
		q.push(b+c);
		printf("%d ",b);
		printf("%d ",c);
		printf("%d\n",ans);
		ans+=b+c;
	}
	printf("%d",ans);
	return 0;
}
开发者ID:chestnutprog,项目名称:CODING,代码行数:24,代码来源:未命名18.cpp

示例3: sp

void sp(vector<int> & dist, adjType & graph, priority_queue< KeyValPair> & heap, set<int> &found, int maxDist) {

	// all nodes whithin maxDist of start are stored in distances along with their distances
	// dist has to be initialized to -1 and sizez of num vertices of the graph

	while (!heap.empty()) {
		KeyValPair top = heap.top();
		heap.pop();
		top.value = top.value * -1;
		if (dist[top.key] != -1) continue;
		found.insert(top.key);
		dist[top.key] = top.value;
		//cout << "marked " << top.key << " " << top.value << endl;

		for (adjList::iterator i = graph[top.key].begin(); i != graph[top.key].end(); i++) {
			int adjNext = i->first;
			int adjLen  = i->second;
			if ((dist[adjNext] == -1) && (top.value + adjLen <= maxDist)) {
				heap.push(KeyValPair(adjNext, -1 *(top.value + adjLen)));
			}
		}
	}
	return;
}
开发者ID:pashadag,项目名称:Pdb,代码行数:24,代码来源:pabFull.cpp

示例4: main

int main()
{
	int a,n,s,t1,t2;
	while(cin>>n)
	{
		if(n==0)break;
		for(int i = 0; i < n; i++)
		{
			cin>>a;
			q.push(a);
		}
		s = 0;
		while(q.size()>1)
		{
			t1 = q.top(); q.pop();
			t2 = q.top(); q.pop();
			s+=t1+t2;
			q.push(t1+t2);
		}
		cout<<s<<endl;
		q.pop();
	}
	return 0;
}
开发者ID:a0919610611,项目名称:Acm-icpc,代码行数:24,代码来源:code+from+ghbgh.cpp

示例5: dijkstra

void dijkstra(int s) {
    for(int i = 0; i <= n; i++) d1[i] = d2[i] = inf;
    while(!pq.empty()) pq.pop();
    d1[s] = 0;
    pq.push(PII(0, s));
    while(!pq.empty()) {
        PII cur = pq.top();
        pq.pop();
        w = cur.first;
        v = cur.second;
        if(d2[v] < w) continue;
        for(int i = 0; i < e[v].size(); i++) {
            int dd = w + e[v][i].w;
            if(d1[e[v][i].v] > dd) {
                swap(d1[e[v][i].v], dd);
                pq.push(PII(d1[e[v][i].v], e[v][i].v));
            }
            if(d2[e[v][i].v] > dd && dd > d1[e[v][i].v]) {
                d2[e[v][i].v] = dd;
                pq.push(PII(d2[e[v][i].v], e[v][i].v));
            }
        }
    }
}
开发者ID:VincentXWD,项目名称:algorithm,代码行数:24,代码来源:poj3255.cpp

示例6: SwiActivate

/*************************************************************************************************
函数说明:软中断激活
输入参数:swiId: 待激活软中断ID
输出参数:无
返回值  :成功返回0, 其它情况返回-1
**************************************************************************************************/
int SwiActivate(unsigned int swiId)
{
	if (!swiMap.count(swiId))
		return -1;
	swiQueue.push(swiMap[swiId]);

	while (!swiQueue.empty())
	{
		Node tempNode = swiQueue.top();
		if (runningId != tempNode.swiId)
		{
			int oldRunningId = runningId;
			runningId = tempNode.swiId;
			tempNode.proc();
			runningId = oldRunningId;
			swiQueue.pop();
		}
		else
			break;

	}

	return 0;
}
开发者ID:19920625lsg,项目名称:HuaweiOJ_dx,代码行数:30,代码来源:SwiSchedule.cpp

示例7: dijkstra

void dijkstra(int s)
{
    while (!q.empty()) q.pop();
    memset(d,0x3f,sizeof d);

    d[s]=0;
    q.push((Heap_node){s,d[s]});

    while (!q.empty())
    {
        Heap_node x=q.top();q.pop();

        if (d[x.s]<x.d) continue;

        for (int e=fir[x.s];~e;e=nex[e])
        {
            if (d[v[e]]>d[x.s]+w[e])
            {
                d[v[e]]=d[x.s]+w[e];
                q.push((Heap_node){v[e],d[v[e]]});
            }
        }
    }
}
开发者ID:fcbruce,项目名称:algorithm-game,代码行数:24,代码来源:3661_AnimalRun.cpp

示例8: prime

int prime(){
    int ans = 0;
    Node t;
    t.v = 1;
    t.w = 0;
    que.push(t);
    int nume = 0;
    while(!que.empty() && nume < m){
        t = que.top();
        que.pop();
        if(vis[t.v]) continue;
        ans += t.w;
        vis[t.v] = true;
        nume++;
        for(int i = head[t.v]; i != -1; i = edge[i].n)
            if(!vis[edge[i].v]){
                Node tt;
                tt.v = edge[i].v;
                tt.w = edge[i].w;
                que.push(tt);
            }
    }
    return ans;
}
开发者ID:andrewei1316,项目名称:OJSubmit,代码行数:24,代码来源:1287_20150228-194400_784K_16MS_AC.cpp

示例9: minCost

long long minCost(vector <string> road, vector <int> altitude)
{
	memset(vis, 0, sizeof vis);
	int n = road.size();
	long long ans = INF;
	//for (int i=0; i<n; ++i) road[i][i] = 'Y';
	for (int j = 0; j < n; ++j) {
		int d = abs(altitude[j] - altitude[0]);
		state s = {0, j, d};
		pq.push(s);
	}
	while (!pq.empty()) {
		state cur = pq.top(); pq.pop();
		int pos = cur.pos;
		int alt = cur.alt;
		long long dist = cur.dist;
		//cout << pos << ' ' << alt << ' ' << dist << endl;
		if (vis[pos][alt]) continue;
		vis[pos][alt] = 1;		

		if (pos == n-1) { ans = dist; break; }
		
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j) 
		if (road[pos][i] == 'Y' && altitude[alt] >= altitude[j])
		{
			if (!vis[i][j]) {
				long long d = dist + abs(altitude[i] - altitude[j]);
				state ss = {i, j, d};
				pq.push(ss);
			}
		}
	}
	if (ans >= INF) return -1;
	else return ans;
}
开发者ID:lantimilan,项目名称:topcoder,代码行数:36,代码来源:p450.cpp

示例10: main

int main() {
    scanf("%d %d", &v, &e);
    for (int i = 0; i < e; i++) {
        scanf("%d %d %d %d", &m, &n, &d, &s);
        roads[m].push_back(make_pair(n, d * 60.0 / s));
        roads[n].push_back(make_pair(m, d * 60.0 / s));
    }

    num[1] = 0;
    dist[1] = 0.0;
    q.push(make_tuple(0, 0, 1));
    for (int i = 1; i <= v; i++) { num[i] = e; dist[i] = 1e16; }
    
    double this_time, new_cost;
    int this_num, idx, new_idx;

    while (!q.empty()) {
        std::tie(this_time, this_num, idx) = q.top(); q.pop();
        this_time *= -1; this_num *= -1;
        for (auto a : roads[idx]) {
            std::tie(new_idx, new_cost) = a;
            double alt = this_time + new_cost;
            if (alt < dist[new_idx]) {
                dist[new_idx] = alt;
                num[new_idx] = this_num + 1;
                q.push(make_tuple(-alt, -num[new_idx], new_idx));
            } else if (alt == dist[new_idx] &&
                    this_num + 1 < num[new_idx]) {
                num[new_idx] = this_num + 1;
                q.push(make_tuple(-alt, -num[new_idx], new_idx));
            }
        }
    }

    printf("%d\n%d\n", num[v], (int)(round(dist[v] / 3)));    
}
开发者ID:nathanlo99,项目名称:dmoj_archive,代码行数:36,代码来源:dmopc14ce1p4.cpp

示例11: dijkastra

int dijkastra()
{   
    int i,j,k,s,pos=-1;
   
   	for(i=1;i<=n;i++)vis[i]=0;
   
    while(!q.empty())
    {
    
    s=q.top().i;
    q.pop();
    
    
    for(i=0;i<v[s].size();i++)
    {
    if(vis[v[s][i].first])continue;
    if(dis[s]+v[s][i].second<dis[v[s][i].first])
    {
                                                dis[v[s][i].first]=dis[s]+v[s][i].second;
                                                q.push(vertex(v[s][i].first,dis[v[s][i].first]));
    }
    }
    vis[s]=1;
    }
    
    j=0;
	for(i=1;i<=n;i++)
	{  
	   if(dis[i]>j){j=dis[i];pos=i;}
	   

    }
	
	
	return j;
}
开发者ID:jayantbit,项目名称:UVA,代码行数:36,代码来源:Fire+Station_10278.cpp

示例12: main

int main(){
	 node1.date = 4 ;
	 node2.date = 5 ;
	 node3.date = 4 ;
	 node1.num = 5 ;
	 node2.num = 4 ;
	 node3.num = 3 ;
	q.push(node1) ;
	q.push(node2) ;
	q.push(node3) ;
		node[50].num = 100 ;
	q.push(node[50]) ;

	while(!q.empty()){
		Node temp ;
		temp = q.top() ;
		q.pop() ;
		cout << temp.date << " " << temp.num << endl ;
	}
	return 0 ;
	
	
	
}
开发者ID:zhangsh950618,项目名称:algorithm,代码行数:24,代码来源:priority_queueText.cpp

示例13: bfs

int bfs(point s, point t){
    s.v = 0;
    is[s.x][s.y] = true;
    if(s.x == t.x && s.y == t.y) return s.v;
    qu.push(s);
    while(!qu.empty()){
        s = qu.top();
        qu.pop();
        if(s.x == t.x && s.y == t.y) return s.v;
        for(int i = 0; i < 4; i++){
            point s1;
            int dx = s.x + dir[i][0];
            int dy = s.y + dir[i][1];
            if(dx >= 0 && dx < n && dy >= 0 && dy < m && !is[dx][dy] && ch[dx][dy] != 'S' && ch[dx][dy] != 'R'){
                is[dx][dy] = true;
                if(ch[dx][dy] == 'B') s1.v = s.v + 2;
                else s1.v = s.v + 1;
                s1.x = dx, s1.y = dy;
                qu.push(s1);
            }
        }
    }
    return -1;
}
开发者ID:andrewei1316,项目名称:OJSubmit,代码行数:24,代码来源:2312_20150103-142732_916K_16MS_AC.cpp

示例14: replacement

int replacement(int n, int gondolaSeq[], int replacementSeq[]){
    int piv = 0, piv2 = n+1, piv3 = 0;
    for (int i=0; i<n; i++) {
        if(gondolaSeq[i] <= n){
            piv = gondolaSeq[i] - i - 1+ n;
            piv %= n;
        }
    }
    int newSeq[100005] = {};
    for (int i=0; i<n; i++) {
        newSeq[i] = gondolaSeq[(i + n - piv)%n];
        if(newSeq[i] > n) pq.push(pi(newSeq[i],i+1));
    }
    while (!pq.empty()) {
        pi x = pq.top();
        pq.pop();
        replacementSeq[piv3++] = x.second;
        for (int i=piv2; i<x.first; i++) {
            replacementSeq[piv3++] = i;
        }
        piv2 = x.first + 1;
    }
    return piv3;
}
开发者ID:koosaga,项目名称:olympiad,代码行数:24,代码来源:ioi14_gondola.cpp

示例15: main

int main(){
	
	int n, l;
	int lig[1000007];
	int v[1005] = {0};
	scanf("%d %d",&n,&l);

	for(int i = 0; i < l; i++)
		scanf("%d",&lig[i]);

	if(l < n){
		for(int i = 0; i < n; i++)
			printf("%d %d\n",i+1,i < l ? 1 : 0);
	}
	else{ 
		for(int i = 0; i < n; i++){
			pq.push(make_pair(-lig[i],-i));
			v[i]++;
		}

		for(int i = n; i < l; i++){
			pair<int, int> aux;
			aux = pq.top();
			pq.pop();
			pq.push(make_pair(-lig[i]+aux.first,aux.second));
			v[-aux.second]++;
		}

		for(int i = 0; i < n; i++)
			printf("%d %d\n",i+1,v[i]);
	}




}
开发者ID:gabrielrussoc,项目名称:competitive-programming,代码行数:36,代码来源:19960.cpp


注:本文中的priority_queue::top方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。