#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; const ll INF=1e16; int n, m, l; ll t[2001]; vector

g[2001]; ll d[2001][2001]; int main() { cin>>n>>m>>l; l--; for(int i=0; i>t[i]; for(int i=0; i>a>>b>>c; a--; b--; g[a].push_back(P(c, b)); g[b].push_back(P(c, a)); } for(int i=0; i, greater

> que; que.push(P(0, i)); while(!que.empty()){ P p=que.top(); que.pop(); int x=p.second; if(d[i][x]d[i][x]+q.first){ d[i][y]=d[i][x]+q.first; que.push(P(d[i][y], y)); } } } } ll ans=INF; for(int i=0; i0){ ans1=d[l][i]; for(int j=0; j