- #include<stdio.h>
- #define max 200000
- int main(){
- int m[105][105], ma[105][105], se[105][105];
- int i, j, k, n, r, c1, c2, d, cnt = 1;
- for(i=0; i<n; i++){
- for(j=i; j<n; j++){
- m[i][j] = m[j][i] = max;
- ma[i][j] = ma[j][i] = 2 * max;
- }
- }
- while(r--){
- m[c1][c2] = m[c2][c1] = d;
- }
- for(k=0; k<n; k++){
- for(i=0; i<n; i++){
- for(j=i+1; j<n; j++){
- if(m[i][k] + m[k][j] < m[i][j]){
- if(m[i][j] < ma[i][j]){
- ma[i][j] = ma[j][i] = m[i][j];
- }
- m[i][j] = m[j][i] = m[i][k] + m[k][j];
- }else if(m[i][k] + m[k][j] > m[i][j] && m[i][k] + m[k][j] < ma[i][j]){
- ma[i][j] = ma[j][i] = m[i][k] + m[k][j];
- }
- if(m[i][j] < ma[i][k] + m[k][j] && ma[i][k] + m[k][j] < ma[i][j]){
- ma[i][j] = ma[j][i] = ma[i][k] + m[k][j];
- }
- if(m[i][j] < m[i][k] + ma[k][j] && m[i][k] + ma[k][j] < ma[i][j]){
- ma[i][j] = ma[j][i] = m[i][k] + ma[k][j];
- }
- }
- }
- }
- for(k=0; k<n; k++){
- for(i=0; i<n; i++){
- for(j=i; j<n; j++){
- if(i == j){
- if((2 * m[k][j]) < ma[i][j])
- ma[i][j] = ma[j][i] = (2 * m[k][j]);
- else if((2 * m[k][i]) < ma[i][j])
- ma[i][j] = ma[j][i] = (2 * m[k][i]);
- }else{
- if((2 * m[k][j] + m[i][j]) < ma[i][j] && (2 * m[k][j] + m[i][j]) > m[i][j]){
- ma[i][j] = ma[j][i] = (2 * m[k][j] + m[i][j]);
- /*printf("pass %d =>turn ma[%d][%d] to %d\n", k, i, j, ma[i][j]);*/
- }
- if((2 * m[k][i] + m[i][j]) < ma[i][j] && (2 * m[k][i] + m[i][j]) > m[i][j]){
- ma[i][j] = ma[j][i] = (2 * m[k][i] + m[i][j]);
- /*printf("pass %d =>turn ma[%d][%d] to %d\n", k, i, j, ma[i][j]);*/
- }
- }
- }
- }
- }
- while(r--){
- if(ma[c1][c2] < max)
- else
- }
- }
- return 0;
- }
Raw Paste