各位大佬写spfa蒟蒻的我只会用Dijkstra瞎搞.....然后AC了....虽然一开始本蒟蒻用前向星或邻接表RE了一天...,我们发现其实就是从这个点去搜它到每个点的距离....
代码:
#include<bits/stdc++.h> using namespace std; int n,m,h; int main() { cin>>n>>m>>h; int a1[m+1],a2[m+1],a3[m+1];//省空间 int ans[m+2];//同上 for(int i=1;i<=m;i++) { cin>>a1[i]>>a2[i]>>a3[i];//读入 } for(int i=1;i<=n;i++) { ans[i]=9999999;//赋初值 } ans[h]=0; for(int i=1;i<=n-1;i++) { int maxn=1; for(int j=1;j<=m;j++) { if(ans[a2[j]]>ans[a1[j]]+a3[j])//每个点去找 { ans[a2[j]]=ans[a1[j]]+a3[j]; maxn=0; } } if(maxn) break; } for(int i=1;i<=n;i++) { if(ans[i]!=9999999) cout<<ans[i]<<" ";//输出 else cout<<"2147483647 "; } }
完事....