# UVa 題目整理
## Floyd-Warshall (全源最短路徑)
### UVa 11463
``` cpp=1
#include "bits/stdc++.h"
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
int main() {
int kase;
cin >> kase;
for (int r = 1; r <= kase; r++) {
int n,fp,lp; cin >> n;
vector<vector<int> > dist(n, vector<int>(n, inf));
int path; cin >> path;
while(path--){
int tmp1,tmp2;
cin>>tmp1>>tmp2;
dist[tmp1][tmp2]=1;
dist[tmp2][tmp1]=1;
}
cin>>fp>>lp;
for(int i=0;i<n;i++)
dist[i][i] = 0;
for (int k = 0; k < n; k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
dist[i][j] = min(dist[i][j],dist[i][k] + dist[k][j]);
int ans = 0;
for (int i = 0; i < n; i++)
ans = max(ans, dist[fp][i] + dist[i][lp]);
cout << "Case "<<r<<": "<< ans << endl;
}
return 0;
}
```
## 水題
### UVa10041
```cpp=1
#include "bits/stdc++.h"
using namespace std;
main(){
int kase;cin>>kase;
while(kase--){
int n;cin>>n;
vector<int> vec(n);
for(int &i:vec) cin>>i;
sort(vec.begin(),vec.end());
int mid = vec[vec.size()/2-1+vec.size()%2],sum=0;
for(int i:vec)
sum+= abs(mid-i);
cout<<sum<<endl;
}
}
```
### UVa11321
```cpp=1
#include "bits/stdc++.h"
using namespace std;
int m,n;
bool cmp(int a,int b){
if(a%m!=b%m){
return (a%m)<(b%m);
}
else{
if((a%2)&&!(b%2))
return 1;
if(!(a%2)&&(b%2))
return 0;
if((a%2)&&(b%2))
return a>b;
if(!(a%2)&&!(b%2))
return a<b;
}
}
main(){
while(cin>>n>>m){
cout<<n<<' '<<m<<endl;
if(!n||!m) break;
vector<int> vec(n);
for(int& i:vec)
cin>>i;
sort(vec.begin(),vec.end(),cmp);
for(int i:vec)
cout<<i<<endl;
}
}
```
### UVa291
```cpp=1
#include <bits/stdc++.h>
using namespace std;
int ans[8];
bool m[6][6] = {0};
void S(int nowP, int n)
{
ans[n] = nowP;
if (n == 7)
{
for (int i = 0; i < 8; i++)
cout << ans[i];
cout << endl;
}
for (int i = 1; i < 6; i++)
{
if (m[nowP][i])
{
m[nowP][i] = m[i][nowP] = false;
S(i, n + 1);
m[nowP][i] = m[i][nowP] = true;
}
}
}
int main()
{
m[1][2] = m[2][1] = true;
m[1][5] = m[5][1] = true;
m[1][3] = m[3][1] = true;
m[2][3] = m[3][2] = true;
m[2][5] = m[5][2] = true;
m[3][4] = m[4][3] = true;
m[3][5] = m[5][3] = true;
m[4][5] = m[5][4] = true;
S(1, 0);
}
```
### UVa568
```cpp=1
#include "bits/stdc++.h"
using namespace std;
long long ans=1;
int main(){
int n;
while(cin>>n){
for(int i=1;i<=n;i++){
ans*=i;
while(!(ans%10))
ans/=10;
ans%=5;
}
cout<<ans%10<<endl;
}
}
```
### UVa579
```cpp=1
#include <bits/stdc++.h>
using namespace std;
int main(){
float h,m;
while(scanf("%f:%f",&h,&m)!=EOF&&(h||m)){
float angle,ha,ma;
ha=h*30.0+m/2;
ma=m*6.0;
angle=fabs(ha-ma);
if(angle>180.0)
angle=fabs(360.0-angle);
printf("%.3f\n",angle);
}
}
```