标签:sts limit 最短路 front out end map mem ber
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 46859 | Accepted: 15941 |
Description
Input
Output
Sample Input
5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100
Sample Output
90
熟悉一下刚学的SPFA,注意双向边,所以边数组要开倍。
#include<iostream> #include<cstdio> #include<map> #include<cstring> #include<queue> using namespace std; #define V 1005 #define E 4005 #define INF 99999999 struct Edge { int v,w; int next; } edge[E]; int head[V]; int cnte=0; void addEdge(int a,int b,int c) { edge[cnte].v=b; edge[cnte].w=c; edge[cnte].next=head[a]; head[a]=cnte++; } int t,n; int dist[V],vis[V]; void Spfa() { for(int i=0; i<=n; i++) { dist[i]=INF; vis[i]=0; } queue<int>q; q.push(1); dist[1]=0; vis[1]=1; while(!q.empty()) { int u=q.front(); q.pop(); for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].v; if(dist[v]>dist[u]+edge[i].w) { dist[v]=dist[u]+edge[i].w; if(!vis[v]) { vis[v]=1; q.push(v); } } } vis[u]=0; } } int main() { //cout<<INF<<endl; scanf("%d%d",&t,&n); memset(head,-1,sizeof(head)); for(int i=0; i<t; i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); addEdge(a,b,c); addEdge(b,a,c); } Spfa(); printf("%d\n",dist[n]); return 0; }
#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<queue>using namespace std;#define V 1005#define E 4005#define INF 99999999
struct Edge{ int v,w; int next;} edge[E];
int head[V];
int cnte=0;void addEdge(int a,int b,int c){ edge[cnte].v=b; edge[cnte].w=c; edge[cnte].next=head[a]; head[a]=cnte++;}
int t,n;int dist[V],vis[V];void Spfa(){ for(int i=0; i<=n; i++) { dist[i]=INF; vis[i]=0; } queue<int>q; q.push(1); dist[1]=0; vis[1]=1; while(!q.empty()) { int u=q.front(); q.pop(); for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].v; if(dist[v]>dist[u]+edge[i].w) { dist[v]=dist[u]+edge[i].w; if(!vis[v]) { vis[v]=1; q.push(v); } } } vis[u]=0; }}int main(){ //cout<<INF<<endl; scanf("%d%d",&t,&n); memset(head,-1,sizeof(head)); for(int i=0; i<t; i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); addEdge(a,b,c); addEdge(b,a,c); } Spfa(); printf("%d\n",dist[n]); return 0;}
标签:sts limit 最短路 front out end map mem ber
原文地址:http://www.cnblogs.com/jasonlixuetao/p/6115335.html