hdu 1142 A Walk Through the Forest
2014-04-24 20:32
316 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1142
这道题是spfa求最短路,然后dfs()求路径数。
View Code
这道题是spfa求最短路,然后dfs()求路径数。
#include <cstdio> #include <queue> #include <cstring> #include <algorithm> #define maxn 1001 using namespace std; const int inf=1<<30; int g[maxn][maxn]; int dis[maxn]; bool vis[maxn],visi[maxn]; int n,m,a,b,d; int di; int cnt[maxn]; int num[maxn]; bool spfa() { queue<int>q; memset(vis,false,sizeof(vis)); memset(cnt,0,sizeof(cnt)); for(int i=1; i<=n; i++) dis[i]=inf; dis[2]=0; vis[2]=true; q.push(2); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=false; for(int i=1; i<=n; i++) { if(dis[i]>dis[u]+g[u][i]&&g[u][i]!=inf) { dis[i]=dis[u]+g[u][i]; if((++cnt[i])>n) return false; if(!vis[i]) { q.push(i); vis[i]=true; } } } } return true; } void dfs(int src) { if(src==2) { num[2]=1; return ; } int sum=0; for(int i=1; i<=n; i++) { if(g[src][i]!=inf&&dis[src]>dis[i]) { if(num[i]>=0) { sum+=num[i]; } else { dfs(i); sum+=num[i]; } } } num[src]=sum; } int main() { while(scanf("%d",&n)!=EOF) { if(n==0) break; scanf("%d",&m); for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i==j) g[i][j]=0; else g[i][j]=inf; } } for(int i=0; i<m; i++) { scanf("%d%d%d",&a,&b,&d); g[a][b]=g[b][a]=min(g[a][b],d); } spfa(); //printf("%d\n",dis[1]); for(int i=1; i<=n; i++) { num[i]=-1; } dfs(1); printf("%d\n",num[1]); } return 0; }
View Code
相关文章推荐
- hdu 1142 A Walk Through the Forest spfa
- HDU1142 A Walk Through the Forest 【SPFA】+【记忆化搜索】
- HDU 1142 A Walk Through the Forest (SPFA+记忆化DFS)
- hdu 1142 A Walk Through the Forest
- hdu1142-A Walk Through the Forest
- hdu1142 - A Walk Through the Forest(SPFA+记忆化搜索)
- HDU 1142 A Walk Through the Forest
- HDU 1142 A Walk Through the Forest (记忆化搜索 最短路)
- HDU1142-A Walk Through the Forest(记忆化搜索+SPFA)
- A Walk Through the Forest HDU 1142
- hdu 1142 A Walk Through the Forest
- hdu 1142 A Walk Through the Forest spfa
- [HDU 1142]A Walk Through the Forest
- HDU 1142 A Walk Through the Forest
- hdu 1142/hrbust 1347 A Walk Through the Forest/森林中的路【SPFA+记忆化搜索】
- HDU 1142 A Walk Through the Forest
- [HDU 1142] A Walk Through the Forest
- hdu 1142 A Walk Through the Forest (digkstra+记忆化搜索)
- hdu 1142 A Walk Through the Forest<java>
- Hdu-1142 A Walk Through the Forest