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 |
大佬们,超内存怎么办#include <iostream> #include<set> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #include<cstdlib> #include<memory.h> #define INF 0x3f3f3f3f using namespace std; int n,ml,md; int d[1005];//最大距离 vector<int> g[1005]; vector<int> cost[1005]; int v1,v2,c; typedef pair<int,int> P; struct cmp{ bool operator()(P p1,P p2) { return p1.first<p2.first; } }; priority_queue<P,vector<P>,cmp> q; int _need[1005]; void dirj() { q.push(P(1,0));//先顶点后最大距离 d[1]=0; while(!q.empty()) { P p=q.top(); int u=p.first; q.pop(); for(int j=0;j<g[u].size();j++) { int v=g[u][j]; if(d[v]<d[u]+cost[u][j]) { d[v]=d[u]+cost[u][j]; q.push(P(v,d[v])); } } } printf("%d\n",d[n]); } int main() { while(scanf("%d %d %d",&n,&ml,&md)!=EOF) { for(int i=1;i<=n;i++) {d[i]=0;g[i].clear();cost[i].clear();} memset(_need,1,sizeof(int)*1005); for(int i=0;i<ml;i++) { scanf("%d %d %d",&v1,&v2,&c); g[v1].push_back(v2); cost[v1].push_back(c); } for(int i=0;i<md;i++) { cin>>v1>>v2>>c; g[v2].push_back(v1); cost[v2].push_back(0-c); } dirj(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator