P1807 最长路
#include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace std; struct note { int y; int w; }; vector<note> a[1510]; queue<int> dl; bool b[100100]; int v,n,ww[1510]; void dfs(int i,int w) { for(int j=0;j<a[i].size();j++) { if(b[a[i][j].y]==0&&ww[a[i][j].y]<w+a[i][j].w) { ww[a[i][j].y]=w+a[i][j].w; b[a[i][j].y]=1; dfs(a[i][j].y,w+a[i][j].w); b[a[i][j].y]=0; } } } int main() { cin>>v>>n; for(int i=1;i<=n;i++) { int x,y,w; cin>>x>>y>>w; note t; t.y=y; t.w=w; a[x].push_back(t); } for(int i=0;i<=v;i++) { ww[i]=0x80000000; } b[1]=1; dfs(1,0); if(ww[v]==0x80000000) cout<<-1; else cout<<ww[v]; //memset(b,0,sizeof(b)); //bfs(1); }