pat1003 Emergency
2015-02-22 22:39
459 查看
#include<algorithm> #include<cstdio> #include<iostream> #include<vector> #include<queue> #include<map> #include<string> #include<cstring> #include<stack> #define N 1005 #define ll long long #define pb push_back #define eps 1e-9 using namespace std; int head ,c ,in ,dis ,vis ; int cnt,mx,bg,ed,num; vector<int>pre ; queue<int>q; struct node { int to,next,w; }edge[2*N]; void addedge(int a,int b,int w) { edge[cnt].to = b; edge[cnt].w = w; edge[cnt].next = head[a]; head[a] = cnt++; } void spfa() { q.push(bg); in[bg] = 1; for(int i = 0;i<N;i++)dis[i] = 1e9; dis[bg] = 0; while(!q.empty()) { int u = q.front(); q.pop(); in[u] = 0; for(int i = head[u];i!=-1;i = edge[i].next) { int v = edge[i].to; int w = edge[i].w; if(dis[v]>dis[u]+w) { dis[v] = dis[u]+w; if(!in[v]) { in[v] = 1; q.push(v); } pre[v].clear(); pre[v].push_back(u); } else if(dis[v] == dis[u]+w)pre[v].push_back(u); } } } void dfs(int u,int have) { have+=c[u]; if(u == bg) { num++; mx = max(mx,have); return; } for(int i =0;i<pre[u].size();i++) { if(vis[pre[u][i]])continue; dfs(pre[u][i],have); } } int main() { int n,m,i,j,x,y,z; while(scanf("%d%d%d%d",&n,&m,&bg,&ed)!=EOF) { num = cnt = 0; memset(in,0,sizeof(in)); memset(vis,0,sizeof(vis)); memset(head,-1,sizeof(head)); for(i = 0;i<n;i++)scanf("%d",&c[i]); for(i = 0;i<m;i++) { scanf("%d%d%d",&x,&y,&z); addedge(x,y,z); addedge(y,x,z); } spfa(); dfs(ed,0); printf("%d %d\n",num,mx); } return 0; }
相关文章推荐
- PAT 1003 Emergency(最短路(迪杰斯特拉||贝尔曼)最小边权下的最大点权)
- PAT (Advanced Level) Practise 1003 Emergency (25)
- PAT (Advanced Level) Practise 1003 Emergency
- PAT (Advanced Level) 1003 - Emergency(单元最短路)
- 【Pat 1003】Emergency
- pat甲级_路径问题(例题:pat 1003 Emergency (25))
- PAT1003. Emergency (25)
- PAT1003:Emergency
- PAT-1003 Emergency (25)
- PAT 甲级试题1003 Emergency (25) dijkstra变形应用
- PAT程序设计考题——甲级1003(Emergency ) C++实现
- Pat 1003 Emergency (25)
- PAT 1003 Emergency
- PAT 1003 Emergency
- PAT 1003 Emergency
- 浙大PAT advanced level 1003 emergency
- [PAT-甲级]1003.Emergency
- PAT 1003 Emergency 深度优先搜索 (剪枝方案一,未优化)
- pat1003. Emergency
- PAT-A | 1003 | Emergency