This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int mxN=700;
int n, m, k, a, b, d[mxN][mxN], ui, vi;
int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cin >> n >> m >> k >> a >> b, --k;
	memset(d, 0x3f, sizeof(d));
	while(m--) {
		cin >> ui >> vi, --ui, --vi;
		d[ui][vi]=d[vi][ui]=a;
	}
	for(int i=0; i<n; ++i)
		for(int j=0; j<n; ++j)
			if(d[i][j]==a)
				for(int k=0; k<n; ++k)
					if(d[j][k]==a&&d[i][k]!=a)
						d[i][k]=-1;
	for(int i=0; i<n; ++i)
		for(int j=0; j<n; ++j)
			if(d[i][j]==-1)
				d[i][j]=b;
	d[k][k]=0;
	for(int k=0; k<n; ++k)
		for(int i=0; i<n; ++i)
			for(int j=0; j<n; ++j)
				d[i][j]=min(d[i][k]+d[k][j], d[i][j]);
	for(int i=0; i<n; ++i)
		cout << d[k][i] << "\n";
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |